From f1f19bdb664c0da1364fa92d4ad4d8a1cc11fc4e Mon Sep 17 00:00:00 2001 From: "J. Daniel Smith" Date: Wed, 29 Dec 2021 11:00:02 -0500 Subject: [PATCH] get "French XML" working better (#520) * merge in develop/SIDD-3.0 * Squashed commit of the following: commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI * Squashed commit of the following: commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI * Squashed commit of the following: commit 3f59a6260e33423c21326dde8e5bed7dc93cd9f0 Author: Dan Smith Date: Fri Dec 10 08:44:54 2021 -0500 still can't get French XML working commit 1a826e5c300d0e2781a015d1916eba8556a36c2d Author: Dan Smith Date: Thu Dec 9 17:37:11 2021 -0500 Squashed commit of the following: commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit f705be9129ea7c71d6bdc25899b53fd3f655b974 Author: Dan Smith Date: Thu Dec 9 17:35:35 2021 -0500 add overloads for other code commit d61323431bea6e33c4f91b60cb83f3401b76671d Author: Dan Smith Date: Thu Dec 9 16:57:55 2021 -0500 option to disable XML validation for SICD too commit bc2c97e9f79ce91f2dc0ce9b3d5e45a7e60a852b Author: Dan Smith Date: Thu Dec 9 16:09:44 2021 -0500 Squashed commit of the following: commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4cd813b2f115cd2446821bf01dcf7d8c27781322 Author: Dan Smith Date: Thu Dec 9 15:16:01 2021 -0500 Squashed commit of the following: commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 7b210f96d175c35dd4d93a8ede3b1127b6fe442c Author: Dan Smith Date: Thu Dec 9 14:51:53 2021 -0500 Squashed commit of the following: commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4a4d621a17bb568fa07453a6a06f08f34efb7b73 Author: Dan Smith Date: Thu Dec 9 14:47:21 2021 -0500 trying to get the "french" SICD unit-test working commit d63e6eace772c8d02616f467d698da48a14568dd Author: Dan Smith Date: Thu Dec 9 14:42:55 2021 -0500 Squashed commit of the following: commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI * Squashed commit of the following: commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss * use new xml.lite APIs to simplify code * more use of new xml.lite infrastructure * Squashed commit of the following: commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss * xml.lite changes that need to get back to coda-oss * Squashed commit of the following: commit 3610f8e6e0f11a643831280819efb0aff3bb373d Author: Dan Smith Date: Tue Dec 14 09:46:21 2021 -0500 xml.lite tweaks from coda-oss commit 813be14c563d9f4829d342ec008b86da5ef77b27 Merge: 873d4b9d6 9ed21bed3 Author: Dan Smith Date: Mon Dec 13 17:25:22 2021 -0500 Merge branch 'master' into develop/update-externals commit 873d4b9d6c55ae2736fc6208ece14aecf67adf10 Merge: 1c1a7222c ef191da2f Author: Dan Smith Date: Mon Dec 13 13:59:08 2021 -0500 Merge branch 'master' into develop/update-externals commit 1c1a7222c527f5ae89b9c960eb9c3fa9f2ccefa4 Author: Dan Smith Date: Mon Dec 13 13:01:14 2021 -0500 Squashed commit of the following: commit 474b7f2dc37eaa3144b97be8f785911ace32eb4d Author: Dan Smith Date: Mon Dec 13 13:00:02 2021 -0500 xml.lite changes that need to get back to coda-oss commit c9c0ec36cff6ab97ca5c03c3db712794fb511e6e Author: Dan Smith Date: Mon Dec 13 11:45:39 2021 -0500 Squashed commit of the following: commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 1a74d4046085b286d6b0ae02bc62df608fc70ffa Author: Dan Smith Date: Fri Dec 10 12:26:10 2021 -0500 more use of new xml.lite infrastructure commit 5d641a46f254f78f1e8a03c11f35f2f73c54ed5a Author: Dan Smith Date: Fri Dec 10 11:58:22 2021 -0500 use new xml.lite APIs to simplify code commit 01f811e622eb3b8fcb7f20d8cba8c2d384894b31 Author: Dan Smith Date: Fri Dec 10 11:57:57 2021 -0500 Squashed commit of the following: commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 25b83eb24e0ebf095522df47349e7c5fbf1df8e3 Author: Dan Smith Date: Fri Dec 10 09:06:38 2021 -0500 Squashed commit of the following: commit 3f59a6260e33423c21326dde8e5bed7dc93cd9f0 Author: Dan Smith Date: Fri Dec 10 08:44:54 2021 -0500 still can't get French XML working commit 1a826e5c300d0e2781a015d1916eba8556a36c2d Author: Dan Smith Date: Thu Dec 9 17:37:11 2021 -0500 Squashed commit of the following: commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit f705be9129ea7c71d6bdc25899b53fd3f655b974 Author: Dan Smith Date: Thu Dec 9 17:35:35 2021 -0500 add overloads for other code commit d61323431bea6e33c4f91b60cb83f3401b76671d Author: Dan Smith Date: Thu Dec 9 16:57:55 2021 -0500 option to disable XML validation for SICD too commit bc2c97e9f79ce91f2dc0ce9b3d5e45a7e60a852b Author: Dan Smith Date: Thu Dec 9 16:09:44 2021 -0500 Squashed commit of the following: commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4cd813b2f115cd2446821bf01dcf7d8c27781322 Author: Dan Smith Date: Thu Dec 9 15:16:01 2021 -0500 Squashed commit of the following: commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 7b210f96d175c35dd4d93a8ede3b1127b6fe442c Author: Dan Smith Date: Thu Dec 9 14:51:53 2021 -0500 Squashed commit of the following: commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4a4d621a17bb568fa07453a6a06f08f34efb7b73 Author: Dan Smith Date: Thu Dec 9 14:47:21 2021 -0500 trying to get the "french" SICD unit-test working commit d63e6eace772c8d02616f467d698da48a14568dd Author: Dan Smith Date: Thu Dec 9 14:42:55 2021 -0500 Squashed commit of the following: commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit 67768ea901bbd983becc4790b478afe0f17828d5 Author: Dan Smith Date: Thu Dec 9 10:02:19 2021 -0500 Squashed commit of the following: commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit b582c055ba1f0f2532d2f5ad4c97b3cd649e69bd Author: Dan Smith Date: Wed Dec 8 15:26:24 2021 -0500 Squashed commit of the following: commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss * adjust to latest xml.lite changes * start using xml::lite::Uri * more use of xml::lite::Uri * setAttribute() now uses just xml::lite::QName * use xml::lite::QName() for newElement() * use xml::lite::QName() in createValue() * more use of xml::lite::QName * remove unused code * use QName for createDate() * use xml::lite::QName for createDateTime() * use QName for some createString() routines * still more use of xml::lite::QName * use QName for createBooleanType() * use QName for createDouble() * use QName for createInt() * simplify createInt() * remove unused createInt() code * don't need addClassAttributes() as member-function * simplify createString() * prefer reference versions of newElement() as that minimizes the opportunity for memory leaks * we always have std::u8string * makeQName() utility * Squashed commit of the following: commit 01cf2b5cadc18b97ac3a51bde9786b519755b1b1 Author: Dan Smith Date: Wed Dec 15 08:50:17 2021 -0500 simple URI validation commit 3610f8e6e0f11a643831280819efb0aff3bb373d Author: Dan Smith Date: Tue Dec 14 09:46:21 2021 -0500 xml.lite tweaks from coda-oss commit 813be14c563d9f4829d342ec008b86da5ef77b27 Merge: 873d4b9d6 9ed21bed3 Author: Dan Smith Date: Mon Dec 13 17:25:22 2021 -0500 Merge branch 'master' into develop/update-externals commit 873d4b9d6c55ae2736fc6208ece14aecf67adf10 Merge: 1c1a7222c ef191da2f Author: Dan Smith Date: Mon Dec 13 13:59:08 2021 -0500 Merge branch 'master' into develop/update-externals commit 1c1a7222c527f5ae89b9c960eb9c3fa9f2ccefa4 Author: Dan Smith Date: Mon Dec 13 13:01:14 2021 -0500 Squashed commit of the following: commit 474b7f2dc37eaa3144b97be8f785911ace32eb4d Author: Dan Smith Date: Mon Dec 13 13:00:02 2021 -0500 xml.lite changes that need to get back to coda-oss commit c9c0ec36cff6ab97ca5c03c3db712794fb511e6e Author: Dan Smith Date: Mon Dec 13 11:45:39 2021 -0500 Squashed commit of the following: commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 1a74d4046085b286d6b0ae02bc62df608fc70ffa Author: Dan Smith Date: Fri Dec 10 12:26:10 2021 -0500 more use of new xml.lite infrastructure commit 5d641a46f254f78f1e8a03c11f35f2f73c54ed5a Author: Dan Smith Date: Fri Dec 10 11:58:22 2021 -0500 use new xml.lite APIs to simplify code commit 01f811e622eb3b8fcb7f20d8cba8c2d384894b31 Author: Dan Smith Date: Fri Dec 10 11:57:57 2021 -0500 Squashed commit of the following: commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 25b83eb24e0ebf095522df47349e7c5fbf1df8e3 Author: Dan Smith Date: Fri Dec 10 09:06:38 2021 -0500 Squashed commit of the following: commit 3f59a6260e33423c21326dde8e5bed7dc93cd9f0 Author: Dan Smith Date: Fri Dec 10 08:44:54 2021 -0500 still can't get French XML working commit 1a826e5c300d0e2781a015d1916eba8556a36c2d Author: Dan Smith Date: Thu Dec 9 17:37:11 2021 -0500 Squashed commit of the following: commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit f705be9129ea7c71d6bdc25899b53fd3f655b974 Author: Dan Smith Date: Thu Dec 9 17:35:35 2021 -0500 add overloads for other code commit d61323431bea6e33c4f91b60cb83f3401b76671d Author: Dan Smith Date: Thu Dec 9 16:57:55 2021 -0500 option to disable XML validation for SICD too commit bc2c97e9f79ce91f2dc0ce9b3d5e45a7e60a852b Author: Dan Smith Date: Thu Dec 9 16:09:44 2021 -0500 Squashed commit of the following: commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4cd813b2f115cd2446821bf01dcf7d8c27781322 Author: Dan Smith Date: Thu Dec 9 15:16:01 2021 -0500 Squashed commit of the following: commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 7b210f96d175c35dd4d93a8ede3b1127b6fe442c Author: Dan Smith Date: Thu Dec 9 14:51:53 2021 -0500 Squashed commit of the following: commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4a4d621a17bb568fa07453a6a06f08f34efb7b73 Author: Dan Smith Date: Thu Dec 9 14:47:21 2021 -0500 trying to get the "french" SICD unit-test working commit d63e6eace772c8d02616f467d698da48a14568dd Author: Dan Smith Date: Thu Dec 9 14:42:55 2021 -0500 Squashed commit of the following: commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit 67768ea901bbd983becc4790b478afe0f17828d5 Author: Dan Smith Date: Thu Dec 9 10:02:19 2021 -0500 Squashed commit of the following: commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit b582c055ba1f0f2532d2f5ad4c97b3cd649e69bd Author: Dan Smith Date: Wed Dec 8 15:26:24 2021 -0500 Squashed commit of the following: commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss * Squashed commit of the following: commit 82b1f21388dbf0f1b3e402ffaf151421d11149b8 Author: Dan Smith Date: Wed Dec 15 09:38:14 2021 -0500 create a "path" after splitting on ":" commit 01cf2b5cadc18b97ac3a51bde9786b519755b1b1 Author: Dan Smith Date: Wed Dec 15 08:50:17 2021 -0500 simple URI validation commit 3610f8e6e0f11a643831280819efb0aff3bb373d Author: Dan Smith Date: Tue Dec 14 09:46:21 2021 -0500 xml.lite tweaks from coda-oss commit 813be14c563d9f4829d342ec008b86da5ef77b27 Merge: 873d4b9d6 9ed21bed3 Author: Dan Smith Date: Mon Dec 13 17:25:22 2021 -0500 Merge branch 'master' into develop/update-externals commit 873d4b9d6c55ae2736fc6208ece14aecf67adf10 Merge: 1c1a7222c ef191da2f Author: Dan Smith Date: Mon Dec 13 13:59:08 2021 -0500 Merge branch 'master' into develop/update-externals commit 1c1a7222c527f5ae89b9c960eb9c3fa9f2ccefa4 Author: Dan Smith Date: Mon Dec 13 13:01:14 2021 -0500 Squashed commit of the following: commit 474b7f2dc37eaa3144b97be8f785911ace32eb4d Author: Dan Smith Date: Mon Dec 13 13:00:02 2021 -0500 xml.lite changes that need to get back to coda-oss commit c9c0ec36cff6ab97ca5c03c3db712794fb511e6e Author: Dan Smith Date: Mon Dec 13 11:45:39 2021 -0500 Squashed commit of the following: commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 1a74d4046085b286d6b0ae02bc62df608fc70ffa Author: Dan Smith Date: Fri Dec 10 12:26:10 2021 -0500 more use of new xml.lite infrastructure commit 5d641a46f254f78f1e8a03c11f35f2f73c54ed5a Author: Dan Smith Date: Fri Dec 10 11:58:22 2021 -0500 use new xml.lite APIs to simplify code commit 01f811e622eb3b8fcb7f20d8cba8c2d384894b31 Author: Dan Smith Date: Fri Dec 10 11:57:57 2021 -0500 Squashed commit of the following: commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 25b83eb24e0ebf095522df47349e7c5fbf1df8e3 Author: Dan Smith Date: Fri Dec 10 09:06:38 2021 -0500 Squashed commit of the following: commit 3f59a6260e33423c21326dde8e5bed7dc93cd9f0 Author: Dan Smith Date: Fri Dec 10 08:44:54 2021 -0500 still can't get French XML working commit 1a826e5c300d0e2781a015d1916eba8556a36c2d Author: Dan Smith Date: Thu Dec 9 17:37:11 2021 -0500 Squashed commit of the following: commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit f705be9129ea7c71d6bdc25899b53fd3f655b974 Author: Dan Smith Date: Thu Dec 9 17:35:35 2021 -0500 add overloads for other code commit d61323431bea6e33c4f91b60cb83f3401b76671d Author: Dan Smith Date: Thu Dec 9 16:57:55 2021 -0500 option to disable XML validation for SICD too commit bc2c97e9f79ce91f2dc0ce9b3d5e45a7e60a852b Author: Dan Smith Date: Thu Dec 9 16:09:44 2021 -0500 Squashed commit of the following: commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4cd813b2f115cd2446821bf01dcf7d8c27781322 Author: Dan Smith Date: Thu Dec 9 15:16:01 2021 -0500 Squashed commit of the following: commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 7b210f96d175c35dd4d93a8ede3b1127b6fe442c Author: Dan Smith Date: Thu Dec 9 14:51:53 2021 -0500 Squashed commit of the following: commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4a4d621a17bb568fa07453a6a06f08f34efb7b73 Author: Dan Smith Date: Thu Dec 9 14:47:21 2021 -0500 trying to get the "french" SICD unit-test working commit d63e6eace772c8d02616f467d698da48a14568dd Author: Dan Smith Date: Thu Dec 9 14:42:55 2021 -0500 Squashed commit of the following: commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit 67768ea901bbd983becc4790b478afe0f17828d5 Author: Dan Smith Date: Thu Dec 9 10:02:19 2021 -0500 Squashed commit of the following: commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit b582c055ba1f0f2532d2f5ad4c97b3cd649e69bd Author: Dan Smith Date: Wed Dec 8 15:26:24 2021 -0500 Squashed commit of the following: commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss * Squashed commit of the following: commit c6a4bd5b900d83b3407f8793cc756f46965700f4 Author: Dan Smith Date: Fri Dec 17 09:14:23 2021 -0500 sanity-check a URI commit 82b1f21388dbf0f1b3e402ffaf151421d11149b8 Author: Dan Smith Date: Wed Dec 15 09:38:14 2021 -0500 create a "path" after splitting on ":" commit 01cf2b5cadc18b97ac3a51bde9786b519755b1b1 Author: Dan Smith Date: Wed Dec 15 08:50:17 2021 -0500 simple URI validation commit 3610f8e6e0f11a643831280819efb0aff3bb373d Author: Dan Smith Date: Tue Dec 14 09:46:21 2021 -0500 xml.lite tweaks from coda-oss commit 813be14c563d9f4829d342ec008b86da5ef77b27 Merge: 873d4b9d6 9ed21bed3 Author: Dan Smith Date: Mon Dec 13 17:25:22 2021 -0500 Merge branch 'master' into develop/update-externals commit 873d4b9d6c55ae2736fc6208ece14aecf67adf10 Merge: 1c1a7222c ef191da2f Author: Dan Smith Date: Mon Dec 13 13:59:08 2021 -0500 Merge branch 'master' into develop/update-externals commit 1c1a7222c527f5ae89b9c960eb9c3fa9f2ccefa4 Author: Dan Smith Date: Mon Dec 13 13:01:14 2021 -0500 Squashed commit of the following: commit 474b7f2dc37eaa3144b97be8f785911ace32eb4d Author: Dan Smith Date: Mon Dec 13 13:00:02 2021 -0500 xml.lite changes that need to get back to coda-oss commit c9c0ec36cff6ab97ca5c03c3db712794fb511e6e Author: Dan Smith Date: Mon Dec 13 11:45:39 2021 -0500 Squashed commit of the following: commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 1a74d4046085b286d6b0ae02bc62df608fc70ffa Author: Dan Smith Date: Fri Dec 10 12:26:10 2021 -0500 more use of new xml.lite infrastructure commit 5d641a46f254f78f1e8a03c11f35f2f73c54ed5a Author: Dan Smith Date: Fri Dec 10 11:58:22 2021 -0500 use new xml.lite APIs to simplify code commit 01f811e622eb3b8fcb7f20d8cba8c2d384894b31 Author: Dan Smith Date: Fri Dec 10 11:57:57 2021 -0500 Squashed commit of the following: commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 25b83eb24e0ebf095522df47349e7c5fbf1df8e3 Author: Dan Smith Date: Fri Dec 10 09:06:38 2021 -0500 Squashed commit of the following: commit 3f59a6260e33423c21326dde8e5bed7dc93cd9f0 Author: Dan Smith Date: Fri Dec 10 08:44:54 2021 -0500 still can't get French XML working commit 1a826e5c300d0e2781a015d1916eba8556a36c2d Author: Dan Smith Date: Thu Dec 9 17:37:11 2021 -0500 Squashed commit of the following: commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit f705be9129ea7c71d6bdc25899b53fd3f655b974 Author: Dan Smith Date: Thu Dec 9 17:35:35 2021 -0500 add overloads for other code commit d61323431bea6e33c4f91b60cb83f3401b76671d Author: Dan Smith Date: Thu Dec 9 16:57:55 2021 -0500 option to disable XML validation for SICD too commit bc2c97e9f79ce91f2dc0ce9b3d5e45a7e60a852b Author: Dan Smith Date: Thu Dec 9 16:09:44 2021 -0500 Squashed commit of the following: commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4cd813b2f115cd2446821bf01dcf7d8c27781322 Author: Dan Smith Date: Thu Dec 9 15:16:01 2021 -0500 Squashed commit of the following: commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 7b210f96d175c35dd4d93a8ede3b1127b6fe442c Author: Dan Smith Date: Thu Dec 9 14:51:53 2021 -0500 Squashed commit of the following: commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4a4d621a17bb568fa07453a6a06f08f34efb7b73 Author: Dan Smith Date: Thu Dec 9 14:47:21 2021 -0500 trying to get the "french" SICD unit-test working commit d63e6eace772c8d02616f467d698da48a14568dd Author: Dan Smith Date: Thu Dec 9 14:42:55 2021 -0500 Squashed commit of the following: commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit 67768ea901bbd983becc4790b478afe0f17828d5 Author: Dan Smith Date: Thu Dec 9 10:02:19 2021 -0500 Squashed commit of the following: commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit b582c055ba1f0f2532d2f5ad4c97b3cd649e69bd Author: Dan Smith Date: Wed Dec 8 15:26:24 2021 -0500 Squashed commit of the following: commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss * get ready for our own XML namespace * use coda-oss's xml::lite via our own six::xml_lite namespace so we can more easily switch to xerces::lite * a few more places where six::xml_lite needs to be used instead of xml::lite * explicitly create Uris for better compatibility with xerces.lite * more explicit use of Uri instead of std::string * a few more places to use explicit xml_lite::Uri(uri), * get/set a document using std::unique_ptr * more tweaks to account for xerces.lite changes * Squashed commit of the following: commit dc960f74d430442cd3359b8218ad9d9a144bd070 Author: Dan Smith Date: Tue Dec 28 10:37:48 2021 -0500 latest from coda-oss commit c6a4bd5b900d83b3407f8793cc756f46965700f4 Author: Dan Smith Date: Fri Dec 17 09:14:23 2021 -0500 sanity-check a URI commit 82b1f21388dbf0f1b3e402ffaf151421d11149b8 Author: Dan Smith Date: Wed Dec 15 09:38:14 2021 -0500 create a "path" after splitting on ":" commit 01cf2b5cadc18b97ac3a51bde9786b519755b1b1 Author: Dan Smith Date: Wed Dec 15 08:50:17 2021 -0500 simple URI validation commit 3610f8e6e0f11a643831280819efb0aff3bb373d Author: Dan Smith Date: Tue Dec 14 09:46:21 2021 -0500 xml.lite tweaks from coda-oss commit 813be14c563d9f4829d342ec008b86da5ef77b27 Merge: 873d4b9d6 9ed21bed3 Author: Dan Smith Date: Mon Dec 13 17:25:22 2021 -0500 Merge branch 'master' into develop/update-externals commit 873d4b9d6c55ae2736fc6208ece14aecf67adf10 Merge: 1c1a7222c ef191da2f Author: Dan Smith Date: Mon Dec 13 13:59:08 2021 -0500 Merge branch 'master' into develop/update-externals commit 1c1a7222c527f5ae89b9c960eb9c3fa9f2ccefa4 Author: Dan Smith Date: Mon Dec 13 13:01:14 2021 -0500 Squashed commit of the following: commit 474b7f2dc37eaa3144b97be8f785911ace32eb4d Author: Dan Smith Date: Mon Dec 13 13:00:02 2021 -0500 xml.lite changes that need to get back to coda-oss commit c9c0ec36cff6ab97ca5c03c3db712794fb511e6e Author: Dan Smith Date: Mon Dec 13 11:45:39 2021 -0500 Squashed commit of the following: commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 1a74d4046085b286d6b0ae02bc62df608fc70ffa Author: Dan Smith Date: Fri Dec 10 12:26:10 2021 -0500 more use of new xml.lite infrastructure commit 5d641a46f254f78f1e8a03c11f35f2f73c54ed5a Author: Dan Smith Date: Fri Dec 10 11:58:22 2021 -0500 use new xml.lite APIs to simplify code commit 01f811e622eb3b8fcb7f20d8cba8c2d384894b31 Author: Dan Smith Date: Fri Dec 10 11:57:57 2021 -0500 Squashed commit of the following: commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 25b83eb24e0ebf095522df47349e7c5fbf1df8e3 Author: Dan Smith Date: Fri Dec 10 09:06:38 2021 -0500 Squashed commit of the following: commit 3f59a6260e33423c21326dde8e5bed7dc93cd9f0 Author: Dan Smith Date: Fri Dec 10 08:44:54 2021 -0500 still can't get French XML working commit 1a826e5c300d0e2781a015d1916eba8556a36c2d Author: Dan Smith Date: Thu Dec 9 17:37:11 2021 -0500 Squashed commit of the following: commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit f705be9129ea7c71d6bdc25899b53fd3f655b974 Author: Dan Smith Date: Thu Dec 9 17:35:35 2021 -0500 add overloads for other code commit d61323431bea6e33c4f91b60cb83f3401b76671d Author: Dan Smith Date: Thu Dec 9 16:57:55 2021 -0500 option to disable XML validation for SICD too commit bc2c97e9f79ce91f2dc0ce9b3d5e45a7e60a852b Author: Dan Smith Date: Thu Dec 9 16:09:44 2021 -0500 Squashed commit of the following: commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4cd813b2f115cd2446821bf01dcf7d8c27781322 Author: Dan Smith Date: Thu Dec 9 15:16:01 2021 -0500 Squashed commit of the following: commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 7b210f96d175c35dd4d93a8ede3b1127b6fe442c Author: Dan Smith Date: Thu Dec 9 14:51:53 2021 -0500 Squashed commit of the following: commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit 4a4d621a17bb568fa07453a6a06f08f34efb7b73 Author: Dan Smith Date: Thu Dec 9 14:47:21 2021 -0500 trying to get the "french" SICD unit-test working commit d63e6eace772c8d02616f467d698da48a14568dd Author: Dan Smith Date: Thu Dec 9 14:42:55 2021 -0500 Squashed commit of the following: commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit 67768ea901bbd983becc4790b478afe0f17828d5 Author: Dan Smith Date: Thu Dec 9 10:02:19 2021 -0500 Squashed commit of the following: commit d1a7e6f442aff2530a7fd8078b88a56ce050238f Author: Dan Smith Date: Thu Dec 9 09:29:07 2021 -0500 test_valid_six unittests now working commit d6fb257c92ab8e97e2d2a2164484011c60d2c95d Author: Dan Smith Date: Wed Dec 8 17:45:26 2021 -0500 trying to re-enable more unittests commit c787e98a7f339740389e10f5c5cb3760617f3ed1 Author: Dan Smith Date: Wed Dec 8 16:54:28 2021 -0500 unit-test breaks on Linux commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit b582c055ba1f0f2532d2f5ad4c97b3cd649e69bd Author: Dan Smith Date: Wed Dec 8 15:26:24 2021 -0500 Squashed commit of the following: commit bd82787be8ae4f4cd463faa2bb6d2cb5c6d7dba6 Author: Dan Smith Date: Wed Dec 8 15:25:31 2021 -0500 Squashed commit of the following: commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit e621466a38f21d5b66847f5358b4def1fd4ea4ce Author: Dan Smith Date: Wed Dec 8 15:08:04 2021 -0500 merge in develop/8AMPI_PHSI commit c56ac71fcb152d3a802a548b59d90ccc09dfaf83 Author: Dan Smith Date: Wed Dec 8 15:23:00 2021 -0500 merge in develop/SIDD-3.0 commit 33bd17059640d2a02f9766285f05dcdff5de50a8 Author: Dan Smith Date: Mon Dec 13 11:44:54 2021 -0500 nitro release 2.10.7 commit ef19ad2033851682eb3a37bada3a57fcb2b93ef8 Author: Dan Smith Date: Mon Dec 13 11:42:09 2021 -0500 coda-oss release 2021-12-13 commit 86c1856021a5a944c464f9d3cba397a918f68a81 Author: Dan Smith Date: Fri Dec 10 11:57:26 2021 -0500 xml.lite tweaks from coda-oss commit f21f79d3f494e1ca8a5236e95ff5503fdb04e43b Author: Dan Smith Date: Thu Dec 9 17:36:09 2021 -0500 test_xmlParser might be be running in coda-oss commit 3526cd00c6c29b7e8578b204088cafe4ec773ee1 Author: Dan Smith Date: Thu Dec 9 16:09:17 2021 -0500 "private" is part of name mangling commit 351a45f61d63e26fbd379516f073876bf5558050 Author: Dan Smith Date: Thu Dec 9 15:54:13 2021 -0500 more xml.lite updates from coda-oss commit 1c72ba2639502de8e0036c5efc12ea5a2df7b983 Author: Dan Smith Date: Thu Dec 9 15:15:34 2021 -0500 trying to fine the right macro for SWIG commit 8d6e11d803e167835ab3adb09bc96e18f7ac5d41 Author: Dan Smith Date: Thu Dec 9 14:51:34 2021 -0500 need updates to Python bindings too commit e208dd4d072fd9f18860e84f54d68efdebef49a9 Author: Dan Smith Date: Thu Dec 9 14:41:12 2021 -0500 xml.lite changes from coda-oss commit 169df75cb962580fa63f1be3fbf9189c1fd74915 Author: Dan Smith Date: Wed Dec 8 14:32:37 2021 -0500 latest from coda-oss * test grabbing the XML out of binary file * our own wrapper around xml::lite::MinidomParser * use our MinidomParser wrapper * can now parse "french" XML! :-) * use references instead of pointers * remove unused getDocument() * pass "storeEncoding" to MinidomParser * run "french" unit-test for storeEncoding= both true and false * adjust for coda-oss changes * revert six::xml_lite changes; no longer needed * remove remaining support for six::xml_lite --- .../c++/cphd/include/cphd/CPHDXMLControl.h | 6 +- six/modules/c++/cphd/source/CPHDReader.cpp | 5 +- .../c++/cphd/source/CPHDXMLControl.cpp | 23 +- six/modules/c++/cphd/source/CPHDXMLParser.cpp | 2 +- six/modules/c++/cphd03/source/CPHDReader.cpp | 5 +- .../c++/cphd03/source/CPHDXMLControl.cpp | 9 +- .../include/six/convert/BaseConverter.h | 2 +- .../c++/six.convert/source/BaseConverter.cpp | 15 +- .../unittests/test_CollectionInfo.cpp | 16 +- .../c++/six.sicd/unittests/test_valid_six.cpp | 116 ++++++- .../c++/six.sidd/source/DerivedXMLParser.cpp | 2 +- .../six.sidd/source/DerivedXMLParser100.cpp | 6 +- .../six.sidd/source/DerivedXMLParser200.cpp | 6 +- .../six.sidd/source/DerivedXMLParser300.cpp | 6 +- .../six.sidd/source/GeoTIFFReadControl.cpp | 18 +- six/modules/c++/six/include/six/Utilities.h | 4 +- six/modules/c++/six/include/six/XMLParser.h | 92 +++--- six/modules/c++/six/include/six/XmlLite.h | 247 +++++++------- six/modules/c++/six/source/Adapters.cpp | 1 - six/modules/c++/six/source/Utilities.cpp | 18 +- six/modules/c++/six/source/XMLControl.cpp | 15 +- six/modules/c++/six/source/XMLParser.cpp | 81 ++--- six/modules/c++/six/source/XmlLite.cpp | 305 +++++++++--------- six/projects/csm/source/SICDSensorModel.cpp | 19 +- six/projects/csm/source/SIDDSensorModel.cpp | 19 +- test_create_sicd_from_mem_32f.sicd | Bin 0 -> 8006 bytes 26 files changed, 561 insertions(+), 477 deletions(-) create mode 100644 test_create_sicd_from_mem_32f.sicd diff --git a/six/modules/c++/cphd/include/cphd/CPHDXMLControl.h b/six/modules/c++/cphd/include/cphd/CPHDXMLControl.h index 60195acd0..52155dff9 100644 --- a/six/modules/c++/cphd/include/cphd/CPHDXMLControl.h +++ b/six/modules/c++/cphd/include/cphd/CPHDXMLControl.h @@ -139,7 +139,7 @@ class CPHDXMLControl private: //! \return Hardcoded version to uri mapping - static std::unordered_map getVersionUriMap(); + static std::unordered_map getVersionUriMap(); /*! * This function takes in a Metadata object and converts @@ -165,10 +165,10 @@ class CPHDXMLControl * \param uri A string specifying CPHD uri */ std::unique_ptr - getParser(const std::string& uri) const; + getParser(const xml::lite::Uri&) const; // Given the URI get associated version - std::string uriToVersion(const std::string& uri) const; + std::string uriToVersion(const xml::lite::Uri&) const; }; } diff --git a/six/modules/c++/cphd/source/CPHDReader.cpp b/six/modules/c++/cphd/source/CPHDReader.cpp index c2d717c07..999a2712d 100644 --- a/six/modules/c++/cphd/source/CPHDReader.cpp +++ b/six/modules/c++/cphd/source/CPHDReader.cpp @@ -32,6 +32,7 @@ #include #include +#include #include namespace cphd @@ -63,7 +64,7 @@ void CPHDReader::initialize(std::shared_ptr inStream, // Read in the XML string inStream->seek(mFileHeader.getXMLBlockByteOffset(), io::Seekable::START); - xml::lite::MinidomParser xmlParser; + six::MinidomParser xmlParser; xmlParser.preserveCharacterData(true); xmlParser.parse(*inStream, gsl::narrow(mFileHeader.getXMLBlockSize())); @@ -75,7 +76,7 @@ void CPHDReader::initialize(std::shared_ptr inStream, std::vector schemaPaths; std::transform(schemaPaths_.begin(), schemaPaths_.end(), std::back_inserter(schemaPaths), [](const std::string& s) { return s; }); - mMetadata = CPHDXMLControl(logger.get()).fromXML(*(xmlParser.getDocument()), schemaPaths); + mMetadata = CPHDXMLControl(logger.get()).fromXML(xmlParser.getDocument(), schemaPaths); mSupportBlock = std::make_unique(inStream, mMetadata.data, mFileHeader); diff --git a/six/modules/c++/cphd/source/CPHDXMLControl.cpp b/six/modules/c++/cphd/source/CPHDXMLControl.cpp index fab40f071..64d84210c 100644 --- a/six/modules/c++/cphd/source/CPHDXMLControl.cpp +++ b/six/modules/c++/cphd/source/CPHDXMLControl.cpp @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -74,11 +75,11 @@ mem::auto_ptr CPHDXMLControl::toXML( return doc; } -std::unordered_map CPHDXMLControl::getVersionUriMap() +std::unordered_map CPHDXMLControl::getVersionUriMap() { return { - {"1.0.0", "urn:CPHD:1.0.0"}, - {"1.0.1", "http://api.nsgreg.nga.mil/schema/cphd/1.0.1"} + {"1.0.0", xml::lite::Uri("urn:CPHD:1.0.0")}, + {"1.0.1", xml::lite::Uri("http://api.nsgreg.nga.mil/schema/cphd/1.0.1")} }; } @@ -102,9 +103,9 @@ std::unique_ptr CPHDXMLControl::fromXML(const std::string& xmlString, { io::StringStream stringStream; stringStream.write(xmlString); - xml::lite::MinidomParser parser; + six::MinidomParser parser; parser.parse(stringStream); - return fromXML(parser.getDocument(), schemaPaths); + return fromXML(&parser.getDocument(), schemaPaths); } std::unique_ptr CPHDXMLControl::fromXML(const xml::lite::Document* doc, @@ -133,19 +134,19 @@ std::unique_ptr CPHDXMLControl::fromXMLImpl(const xml::lite::Document* } std::unique_ptr -CPHDXMLControl::getParser(const std::string& uri) const +CPHDXMLControl::getParser(const xml::lite::Uri& uri) const { - return std::make_unique(uri, false, mLog); + return std::make_unique(uri.value, false, mLog); } -std::string CPHDXMLControl::uriToVersion(const std::string& uri) const +std::string CPHDXMLControl::uriToVersion(const xml::lite::Uri& uri) const { const auto versionUriMap = getVersionUriMap(); - for (auto it = versionUriMap.begin(); it != versionUriMap.end(); ++it) + for (const auto& p : versionUriMap) { - if (it->second == uri) + if (p.second == uri) { - return it->first; + return p.first; } } std::ostringstream ostr; diff --git a/six/modules/c++/cphd/source/CPHDXMLParser.cpp b/six/modules/c++/cphd/source/CPHDXMLParser.cpp index 3ec495732..93fd573d9 100644 --- a/six/modules/c++/cphd/source/CPHDXMLParser.cpp +++ b/six/modules/c++/cphd/source/CPHDXMLParser.cpp @@ -897,7 +897,7 @@ std::unique_ptr CPHDXMLParser::fromXML( { std::unique_ptr cphd(new Metadata()); - XMLElem root = doc->getRootElement(); + const auto root = doc->getRootElement(); XMLElem collectionIDXML = getFirstAndOnly(root, "CollectionID"); XMLElem globalXML = getFirstAndOnly(root, "Global"); diff --git a/six/modules/c++/cphd03/source/CPHDReader.cpp b/six/modules/c++/cphd03/source/CPHDReader.cpp index 32e94a06b..65e7eba49 100644 --- a/six/modules/c++/cphd03/source/CPHDReader.cpp +++ b/six/modules/c++/cphd03/source/CPHDReader.cpp @@ -29,6 +29,7 @@ #include #include #include +#include namespace cphd03 { @@ -57,7 +58,7 @@ void CPHDReader::initialize(std::shared_ptr inStream, const auto xmlSize = static_cast(mFileHeader.getXMLsize()); inStream->seek(mFileHeader.getXMLoffset(), io::Seekable::START); - xml::lite::MinidomParser xmlParser; + six::MinidomParser xmlParser; xmlParser.preserveCharacterData(true); xmlParser.parse(*inStream, xmlSize); @@ -66,7 +67,7 @@ void CPHDReader::initialize(std::shared_ptr inStream, logger = std::make_shared(); } - mMetadata = CPHDXMLControl(logger.get()).fromXML(*xmlParser.getDocument()); + mMetadata = CPHDXMLControl(logger.get()).fromXML(xmlParser.getDocument()); // Load the VBP into memory mVBM = VBM(mMetadata); diff --git a/six/modules/c++/cphd03/source/CPHDXMLControl.cpp b/six/modules/c++/cphd03/source/CPHDXMLControl.cpp index 2e6bd9563..73990fecc 100644 --- a/six/modules/c++/cphd03/source/CPHDXMLControl.cpp +++ b/six/modules/c++/cphd03/source/CPHDXMLControl.cpp @@ -27,6 +27,7 @@ #include #include #include +#include // CPHD Spec is not enforced #define ENFORCESPEC 0 @@ -489,16 +490,16 @@ mem::auto_ptr CPHDXMLControl::fromXML(const std::string& xmlString) { io::StringStream stringStream; stringStream.write(xmlString); - xml::lite::MinidomParser parser; + six::MinidomParser parser; parser.parse(stringStream); - return fromXML(parser.getDocument()); + return fromXML(&parser.getDocument()); } mem::auto_ptr CPHDXMLControl::fromXML(const xml::lite::Document* doc) { auto cphd03 = std::make_unique(); - XMLElem root = doc->getRootElement(); + const auto root = doc->getRootElement(); XMLElem collectionInfoXML = getFirstAndOnly(root, "CollectionInfo"); XMLElem dataXML = getFirstAndOnly(root, "Data"); @@ -547,7 +548,7 @@ void CPHDXMLControl::fromXML(const xml::lite::Element* dataXML, Data& data) throw except::Exception(Ctxt("Expected at least one ArraySize")); } - for (std::vector::iterator it = arraySizeXML.begin(); + for (auto it = arraySizeXML.begin(); it != arraySizeXML.end(); ++it) { diff --git a/six/modules/c++/six.convert/include/six/convert/BaseConverter.h b/six/modules/c++/six.convert/include/six/convert/BaseConverter.h index 843a5b824..63b9f96a8 100644 --- a/six/modules/c++/six.convert/include/six/convert/BaseConverter.h +++ b/six/modules/c++/six.convert/include/six/convert/BaseConverter.h @@ -55,7 +55,7 @@ struct BaseConverter : protected six::XMLParser protected: static mem::auto_ptr - readXML(const std::string& xmlPathname); + readXML(const std::string& xmlPathname, bool storeEncoding=false); XMLElem findUniqueElement(const xml::lite::Element* root, const std::string& xmlPath) const; diff --git a/six/modules/c++/six.convert/source/BaseConverter.cpp b/six/modules/c++/six.convert/source/BaseConverter.cpp index 036f7444d..87bad5b20 100644 --- a/six/modules/c++/six.convert/source/BaseConverter.cpp +++ b/six/modules/c++/six.convert/source/BaseConverter.cpp @@ -20,9 +20,13 @@ * */ #include "six/convert/BaseConverter.h" + +#include + #include #include -#include + +#include namespace six { @@ -34,13 +38,14 @@ BaseConverter::BaseConverter() : } mem::auto_ptr -BaseConverter::readXML(const std::string& xmlPathname) +BaseConverter::readXML(const std::string& xmlPathname, bool storeEncoding) { - xml::lite::MinidomParser parser; + six::MinidomParser parser(storeEncoding); io::FileInputStream xmlInputStream(xmlPathname); parser.parse(xmlInputStream); - return mem::auto_ptr( - parser.getDocument(true)); + std::unique_ptr pDocument; + parser.getDocument(pDocument); + return mem::auto_ptr(pDocument.release()); } BaseConverter::XMLElem BaseConverter::findUniqueElement( diff --git a/six/modules/c++/six.sicd/unittests/test_CollectionInfo.cpp b/six/modules/c++/six.sicd/unittests/test_CollectionInfo.cpp index f153f3b56..6a005c915 100644 --- a/six/modules/c++/six.sicd/unittests/test_CollectionInfo.cpp +++ b/six/modules/c++/six.sicd/unittests/test_CollectionInfo.cpp @@ -28,6 +28,7 @@ #include #include +#include #ifdef _MSC_VER #pragma warning(disable: 4464) // relative include path contains '..' @@ -66,11 +67,10 @@ TEST_CASE(Classification) io::StringStream ss; ss.stream() << six::sicd::Utilities::toXMLString(*data, schemaPaths); - xml::lite::MinidomParser xmlParser; + six::MinidomParser xmlParser(false /*storeEncoding*/); xmlParser.parse(ss); - const auto doc = xmlParser.getDocument(); - TEST_ASSERT(doc != nullptr); - const auto root = doc->getRootElement(); + const auto& doc = getDocument(xmlParser); + const auto root = doc.getRootElement(); TEST_ASSERT(root != nullptr); const auto classificationElements = root->getElementsByTagName("Classification", true /*recurse*/); @@ -107,12 +107,10 @@ TEST_CASE(ClassificationCanada) io::StringStream ss; ss.stream() << strXml; - xml::lite::MinidomParser xmlParser(true /*storeEncoding*/); - xmlParser.preserveCharacterData(true); // needed to parse UTF-8 XML + six::MinidomParser xmlParser(true /*storeEncoding*/); xmlParser.parse(ss); - const auto doc = xmlParser.getDocument(); - TEST_ASSERT(doc != nullptr); - const auto root = doc->getRootElement(); + const auto& doc = getDocument(xmlParser); + const auto root = doc.getRootElement(); TEST_ASSERT(root != nullptr); const auto classificationElements = root->getElementsByTagName("Classification", true /*recurse*/); diff --git a/six/modules/c++/six.sicd/unittests/test_valid_six.cpp b/six/modules/c++/six.sicd/unittests/test_valid_six.cpp index 6c674d625..4d1fe0d6c 100644 --- a/six/modules/c++/six.sicd/unittests/test_valid_six.cpp +++ b/six/modules/c++/six.sicd/unittests/test_valid_six.cpp @@ -42,8 +42,8 @@ #include #include #include -#include #include +#include #include "../tests/TestUtilities.h" #include "TestCase.h" @@ -56,6 +56,10 @@ namespace fs = std::filesystem; static std::string testName; +constexpr auto PlatformEncoding = sys::Platform == sys::PlatformType::Windows +? xml::lite::StringEncoding::Windows1252 + : xml::lite::StringEncoding::Utf8; + static fs::path argv0() { static const sys::OS os; @@ -187,35 +191,124 @@ TEST_CASE(valid_six_50x50) valid_six_50x50_(&schemaPaths); // validate against schema } +const std::string classificationText_iso8859_1("NON CLASSIFI\xc9 / UNCLASSIFIED"); // ISO8859-1 "NON CLASSIFI� / UNCLASSIFIED" +const std::string classificationText_utf_8("NON CLASSIFI\xc3\x89 / UNCLASSIFIED"); // UTF-8 "NON CLASSIFI� / UNCLASSIFIED" + TEST_CASE(sicd_French_xml) { setNitfPluginPath(); const auto inputPathname = getNitfPath("sicd_French_xml.nitf"); std::unique_ptr pComplexData; + //const std::vector schemaPaths; + //const auto image = six::sicd::readFromNITF(inputPathname, &schemaPaths, pComplexData); const auto image = six::sicd::readFromNITF(inputPathname, pComplexData); // no validation const six::Data* pData = pComplexData.get(); - // UTF-8 characters in 50x50.nitf - #ifdef _WIN32 - const std::string classificationText("NON CLASSIFI\xc9 / UNCLASSIFIED"); // ISO8859-1 "NON CLASSIFI� / UNCLASSIFIED" - #else - const std::string classificationText("NON CLASSIFI\xc3\x89 / UNCLASSIFIED"); // UTF-8 "NON CLASSIFI� / UNCLASSIFIED" - #endif + const auto expectedCassificationText = sys::Platform == sys::PlatformType::Linux ? classificationText_utf_8 : classificationText_iso8859_1; const auto& classification = pData->getClassification(); const auto actual = classification.getLevel(); - TEST_ASSERT_EQ(actual, classificationText); + TEST_ASSERT_EQ(actual, expectedCassificationText); test_nitf_image_info(*pComplexData, inputPathname, nitf::PixelValueType::Floating); } +static bool find_string(io::FileInputStream& stream, const std::string& s) +{ + const auto pos = stream.tell(); + + constexpr sys::Off_T offset = 0x0000558e; + std::string streamAsString; + { + stream.seek(offset, io::Seekable::START); + io::StringStream stringStream; + stream.streamTo(stringStream); + streamAsString = stringStream.stream().str(); + } + const auto result = streamAsString.find(s); + if ((result != std::string::npos) && (result == 0)) + { + stream.seek(offset, io::Seekable::START); + return true; + } + + stream.seek(pos, io::Seekable::START); + return false; +} +static void sicd_French_xml_raw_(bool storeEncoding) +{ + // This is a binary file with XML burried in it somewhere + const auto path = getNitfPath("sicd_French_xml.nitf"); + + io::FileInputStream input(path.string()); + const auto result = find_string(input, " &children = obj->getChildren(); + const auto& children = obj->getChildren(); if (!children.empty()) { //just get the first one diff --git a/six/modules/c++/six.sidd/source/DerivedXMLParser100.cpp b/six/modules/c++/six.sidd/source/DerivedXMLParser100.cpp index 3426ab62b..a3b5eaea7 100644 --- a/six/modules/c++/six.sidd/source/DerivedXMLParser100.cpp +++ b/six/modules/c++/six.sidd/source/DerivedXMLParser100.cpp @@ -340,9 +340,9 @@ DerivedXMLParser100::toXML(const DerivedData* derived) const //set the ElemNS root->setNamespacePrefix("", getDefaultURI()); - root->setNamespacePrefix("si", SI_COMMON_URI); - root->setNamespacePrefix("sfa", SFA_URI); - root->setNamespacePrefix("ism", ISM_URI); + root->setNamespacePrefix("si", xml::lite::Uri(SI_COMMON_URI)); + root->setNamespacePrefix("sfa", xml::lite::Uri(SFA_URI)); + root->setNamespacePrefix("ism", xml::lite::Uri(ISM_URI)); return doc; } diff --git a/six/modules/c++/six.sidd/source/DerivedXMLParser200.cpp b/six/modules/c++/six.sidd/source/DerivedXMLParser200.cpp index d52a86089..91ac3686b 100644 --- a/six/modules/c++/six.sidd/source/DerivedXMLParser200.cpp +++ b/six/modules/c++/six.sidd/source/DerivedXMLParser200.cpp @@ -299,9 +299,9 @@ xml::lite::Document* DerivedXMLParser200::toXML(const DerivedData* derived) cons //set the ElemNS root->setNamespacePrefix("", getDefaultURI()); - root->setNamespacePrefix("si", SI_COMMON_URI); - root->setNamespacePrefix("sfa", SFA_URI); - root->setNamespacePrefix("ism", ISM_URI); + root->setNamespacePrefix("si", xml::lite::Uri(SI_COMMON_URI)); + root->setNamespacePrefix("sfa", xml::lite::Uri(SFA_URI)); + root->setNamespacePrefix("ism", xml::lite::Uri(ISM_URI)); return doc; } diff --git a/six/modules/c++/six.sidd/source/DerivedXMLParser300.cpp b/six/modules/c++/six.sidd/source/DerivedXMLParser300.cpp index ad0a9fc5d..6702bddb9 100644 --- a/six/modules/c++/six.sidd/source/DerivedXMLParser300.cpp +++ b/six/modules/c++/six.sidd/source/DerivedXMLParser300.cpp @@ -213,9 +213,9 @@ xml::lite::Document* DerivedXMLParser300::toXML(const DerivedData* derived) cons //set the ElemNS root->setNamespacePrefix("", getDefaultURI()); - root->setNamespacePrefix("si", SI_COMMON_URI); - root->setNamespacePrefix("sfa", SFA_URI); - root->setNamespacePrefix("ism", ISM_URI); + root->setNamespacePrefix("si", xml::lite::Uri(SI_COMMON_URI)); + root->setNamespacePrefix("sfa", xml::lite::Uri(SFA_URI)); + root->setNamespacePrefix("ism", xml::lite::Uri(ISM_URI)); return doc; } diff --git a/six/modules/c++/six.sidd/source/GeoTIFFReadControl.cpp b/six/modules/c++/six.sidd/source/GeoTIFFReadControl.cpp index e4abc22b3..9a9b82228 100644 --- a/six/modules/c++/six.sidd/source/GeoTIFFReadControl.cpp +++ b/six/modules/c++/six.sidd/source/GeoTIFFReadControl.cpp @@ -28,6 +28,7 @@ #include #include "six/sidd/GeoTIFFReadControl.h" #include "six/XMLControlFactory.h" +#include namespace { @@ -106,12 +107,11 @@ six::sidd::GeoTIFFReadControl::getDataType(const std::string& fromFile) const io::StringStream stream; stream.write(xmlStrs[ii]); stream.seek(0, io::Seekable::START); - xml::lite::MinidomParser xmlParser; + six::MinidomParser xmlParser; xmlParser.preserveCharacterData(true); xmlParser.parse(stream); - const std::string rootName = - xmlParser.getDocument()->getRootElement()->getQName(); + const auto rootName = getDocument(xmlParser).getRootElement()->getQName(); if (rootName == "SIDD") { return six::DataType::DERIVED; @@ -147,19 +147,19 @@ void six::sidd::GeoTIFFReadControl::load( std::unique_ptr siddXMLControl; std::unique_ptr sicdXMLControl; - for (size_t ii = 0; ii < xmlStrs.size(); ++ii) + for (const auto& xmlStr : xmlStrs) { // Parse it into an XML document io::StringStream stream; - stream.write(xmlStrs[ii]); + stream.write(xmlStr); stream.seek(0, io::Seekable::START); - xml::lite::MinidomParser xmlParser; + six::MinidomParser xmlParser; xmlParser.preserveCharacterData(true); xmlParser.parse(stream); - const xml::lite::Document* const doc = xmlParser.getDocument(); + const auto& doc = xmlParser.getDocument(); // Get the associated XML control - const std::string rootName(doc->getRootElement()->getQName()); + const std::string rootName(doc.getRootElement()->getQName()); six::XMLControl* xmlControl = nullptr; if (rootName == "SIDD") { @@ -187,7 +187,7 @@ void six::sidd::GeoTIFFReadControl::load( if (xmlControl) { - std::unique_ptr data(xmlControl->fromXML(doc, + std::unique_ptr data(xmlControl->fromXML(&doc, schemaPaths)); if (!data.get()) diff --git a/six/modules/c++/six/include/six/Utilities.h b/six/modules/c++/six/include/six/Utilities.h index f981752a6..21cdf5150 100644 --- a/six/modules/c++/six/include/six/Utilities.h +++ b/six/modules/c++/six/include/six/Utilities.h @@ -202,10 +202,10 @@ mem::auto_ptr parseData(const XMLControlRegistry& xmlReg, ::io::InputStream& xmlStream, DataType dataType, const std::vector& schemaPaths, - logging::Logger& log); + logging::Logger& log, bool storeEncoding=false); std::unique_ptr parseData(const XMLControlRegistry& xmlReg, ::io::InputStream& xmlStream, DataType dataType, - const std::vector*, logging::Logger&); + const std::vector*, logging::Logger&, bool storeEncoding = true); /* * Parses the XML in 'xmlStream' and converts it into a Data object. Same as diff --git a/six/modules/c++/six/include/six/XMLParser.h b/six/modules/c++/six/include/six/XMLParser.h index c4bea43da..417d0ec38 100644 --- a/six/modules/c++/six/include/six/XMLParser.h +++ b/six/modules/c++/six/include/six/XMLParser.h @@ -92,32 +92,32 @@ struct XMLParser static void setAttribute(xml::lite::Element& e, const std::string& name, size_t i, const std::string& uri = "") { - return XmlLite::setAttribute(e, name, i, uri); + return XmlLite::setAttribute(e, xml::lite::QName(xml::lite::Uri(uri), name), i); } // generic element creation methods, w/URI XMLElem createString(const std::string& name, const std::string& uri, const std::string& p = "", XMLElem parent = nullptr) const; -#if CODA_OSS_lib_char8_t XMLElem createString(const std::string& name, const std::string& uri, const std::u8string& p, - XMLElem parent = nullptr) const; -#endif - XMLElem createString(const std::string& name, const char* p = "", - XMLElem parent = nullptr) const { - return mXmlLite.createString(name, p, parent); + XMLElem parent) const; + XMLElem createString(const std::string& name, const char* p, + XMLElem parent) const { + assert(parent != nullptr); + return &mXmlLite.createString(name, p, *parent); } template XMLElem createSixString(const std::string& name, const std::string& uri, const T& t, - XMLElem parent = nullptr) const + XMLElem parent) const { - return mXmlLite.createSixString(name, uri, t, parent); + assert(parent != nullptr); + return &mXmlLite.createSixString(xml::lite::QName(xml::lite::Uri(uri), name), t, *parent); } XMLElem createDateTime(const std::string& name, const DateTime& p, - XMLElem parent = nullptr) const; + XMLElem parent) const; protected: logging::Logger* log() const @@ -128,7 +128,7 @@ struct XMLParser //! Returns the default URI std::string getDefaultURI() const { - return mXmlLite.getDefaultURI(); + return mXmlLite.getDefaultURI().value; } XMLElem newElement(const std::string& name, XMLElem prnt = nullptr) const; @@ -141,16 +141,14 @@ struct XMLParser static XMLElem newElement(const std::string& name, const std::string& uri, const std::string& characterData, XMLElem parent = nullptr); - #if CODA_OSS_lib_char8_t static XMLElem newElement(const std::string& name, const std::string& uri, - const std::u8string& characterData, XMLElem parent = nullptr); - #endif + const std::u8string& characterData, XMLElem parent); template static XMLElem newElement(const T* pElement, const std::string& name, const std::string& uri, XMLElem parent = nullptr) { - return XmlLite::newElement(pElement, name, uri, parent); + return XmlLite::newElement(pElement, xml::lite::QName(xml::lite::Uri(uri), name), parent); } template @@ -161,50 +159,46 @@ struct XMLParser return & createStringFromEnum(name, enumVal, *parent); } - XMLElem createInt(const std::string& name, const std::string& uri, const std::string& p, XMLElem parent = nullptr) const + XMLElem createInt(const std::string& name, const std::string& uri, const std::string& p, XMLElem parent) const { - return mXmlLite.createInt(name, uri, p, parent); + assert(parent != nullptr); + return &mXmlLite.createInt(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } - XMLElem createInt(const std::string& name, const std::string& uri, int p = 0, XMLElem parent = nullptr) const + XMLElem createInt(const std::string& name, const std::string& uri, int p, XMLElem parent) const { - return mXmlLite.createInt(name, uri, p, parent); + assert(parent != nullptr); + return &mXmlLite.createInt(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } - XMLElem createInt(const std::string& name, const std::string& uri, size_t p = 0, XMLElem parent = nullptr) const + XMLElem createInt(const std::string& name, const std::string& uri, size_t p, XMLElem parent) const { + assert(parent != nullptr); return createInt(name, uri, gsl::narrow(p), parent); } - XMLElem createInt(const std::string& name, const std::string& uri, ptrdiff_t p = 0, XMLElem parent = nullptr) const + XMLElem createInt(const std::string& name, const std::string& uri, ptrdiff_t p, XMLElem parent) const { + assert(parent != nullptr); return createInt(name, uri, gsl::narrow(p), parent); } - XMLElem createDouble(const std::string& name, - const std::string& uri, const std::optional& p, XMLElem parent = nullptr) const; - XMLElem createOptionalDouble(const std::string& name, - const std::string& uri, const double& p, XMLElem parent = nullptr) const; - XMLElem createOptionalDouble(const std::string& name, - const std::string& uri, const std::optional& p, XMLElem parent = nullptr) const; - - XMLElem createBooleanType(const std::string& name, - const std::string& uri, BooleanType b, XMLElem parent = nullptr) const; - - XMLElem createDateTime(const std::string& name, - const std::string& uri, const DateTime& p, XMLElem parent = nullptr) const; - - XMLElem createDate(const std::string& name, - const std::string& uri, const DateTime& p, XMLElem parent = nullptr) const; + XMLElem createDouble(const std::string& name, const std::string& uri, const std::optional& p, XMLElem parent) const; + XMLElem createOptionalDouble(const std::string& name, const std::string& uri, double p, XMLElem parent) const; + XMLElem createOptionalDouble(const std::string& name, const std::string& uri, const std::optional& p, XMLElem parent) const; + XMLElem createBooleanType(const std::string& name, const std::string& uri, BooleanType b, XMLElem parent) const; + XMLElem createDateTime(const std::string& name, const std::string& uri, const DateTime& p, XMLElem parent) const; + XMLElem createDate(const std::string& name, const std::string& uri, const DateTime& p, XMLElem parent) const; // generic element creation methods, using default URI template XMLElem createString(const std::string& name, const T& t, - XMLElem parent = nullptr) const { + XMLElem parent) const { assert(parent != nullptr); return & createString(name, t, *parent); } template XMLElem createSixString(const std::string& name, const T& t, // six::toString(t) isntead of t.toString() - XMLElem parent = nullptr) const { - return mXmlLite.createSixString(name, t, parent); + XMLElem parent) const { + assert(parent != nullptr); + return &mXmlLite.createSixString(name, t, *parent); } template XMLElem createInt(const std::string& name, T p = 0, @@ -212,19 +206,13 @@ struct XMLParser { return & createInt(name, p, *parent); } - XMLElem createDouble(const std::string& name, double p = 0, - XMLElem parent = nullptr) const; - XMLElem createDouble(const std::string& name, const std::optional& p, - XMLElem parent = nullptr) const; - XMLElem createOptionalDouble(const std::string& name, const double& p, - XMLElem parent = nullptr) const; - XMLElem createOptionalDouble(const std::string& name, const std::optional& p, - XMLElem parent = nullptr) const; - XMLElem createBooleanType(const std::string& name, BooleanType b, - XMLElem parent = nullptr) const; - XMLElem createDate(const std::string& name, const DateTime& p, - XMLElem parent = nullptr) const; + XMLElem createDouble(const std::string& name, double p = 0, XMLElem parent = nullptr) const; + XMLElem createDouble(const std::string& name, const std::optional& p, XMLElem parent) const; + XMLElem createOptionalDouble(const std::string& name, double p, XMLElem parent) const; + XMLElem createOptionalDouble(const std::string& name, const std::optional& p, XMLElem parent) const; + XMLElem createBooleanType(const std::string& name, BooleanType b, XMLElem parent) const; + XMLElem createDate(const std::string& name, const DateTime& p, XMLElem parent) const; template void parseInt(const xml::lite::Element& element, T& value) const @@ -292,7 +280,7 @@ struct XMLParser const std::string& s, const std::string& uri = "") { assert(e != nullptr); - return XmlLite::setAttribute(*e, name, s, uri); + return XmlLite::setAttribute(*e, xml::lite::QName(xml::lite::Uri(uri), name), s); } static void setAttribute(XMLElem e, const std::string& name, size_t i, const std::string& uri = "") diff --git a/six/modules/c++/six/include/six/XmlLite.h b/six/modules/c++/six/include/six/XmlLite.h index a11c7a2e7..2e574edcf 100644 --- a/six/modules/c++/six/include/six/XmlLite.h +++ b/six/modules/c++/six/include/six/XmlLite.h @@ -24,27 +24,79 @@ #define SIX_six_XmlLite_h_INCLUDED_ #pragma once -#include +#include + +#include #include #include #include #include +#include +#include #include #include #include -#include #include namespace six { +// A simple wrapper around xml::lite::MinidomParser +struct MinidomParser final +{ + MinidomParser(bool storeEncoding = false); // =true allows parsing of UTF-8 data; but it might break legacy code. + ~MinidomParser(); + MinidomParser(const MinidomParser&) = delete; + MinidomParser& operator=(const MinidomParser&) = delete; + MinidomParser(MinidomParser&&) = default; + MinidomParser& operator=(MinidomParser&&) = default; + + /*! + * Present our parsing interface. Similar to DOM, the input + * is an InputStream (DOM's is called input source), but it + * is even more flexible, and works within the XPC io paradigm. + * \param is This is the input stream to feed the parser + * \param size This is the size of the stream to feed the parser + */ + void parse(io::InputStream& is, int size = io::InputStream::IS_END); + + /*! + * This clears the MinidomHandler, killing its underlying Document + * tree. The Document node is preserved, however -- it must + * be explicitly reset to another document to change element type. + */ + void clear(); + + /*! + * Return a pointer to the document. Note that its a reference + * so you dont get to keep it. + * \return Pointer to document. + */ + const xml::lite::Document& getDocument() const; + void getDocument(std::unique_ptr&); // steal = true + + /*! + * @see MinidomHandler::preserveCharacterData + */ + void preserveCharacterData(bool preserve); + +private: + struct Impl; + std::unique_ptr pImpl; +}; +inline const xml::lite::Document& getDocument(const MinidomParser& xmlParser) +{ + return xmlParser.getDocument(); +} + + struct XmlLite final { - XmlLite(const std::string& defaultURI, bool addClassAttributes, + XmlLite(const xml::lite::Uri& defaultURI, bool addClassAttributes, logging::Logger* log = nullptr, bool ownLog = false); - XmlLite(const std::string& defaultURI, bool addClassAttributes, std::unique_ptr&&); - XmlLite(const std::string& defaultURI, bool addClassAttributes, logging::Logger&); + XmlLite(const xml::lite::Uri& defaultURI, bool addClassAttributes, std::unique_ptr&&); + XmlLite(const xml::lite::Uri& defaultURI, bool addClassAttributes, logging::Logger&); XmlLite(const XmlLite&) = delete; XmlLite& operator=(const XmlLite&) = delete; XmlLite(XmlLite&&) = delete; @@ -67,141 +119,89 @@ struct XmlLite final } //! Returns the default URI - const std::string& getDefaultURI() const + const xml::lite::Uri& getDefaultURI() const { return mDefaultURI; } - xml::lite::Element* newElement(const std::string& name, xml::lite::Element* prnt = nullptr) const; + static xml::lite::Element* newElement(const xml::lite::QName&, xml::lite::Element* prnt); + static xml::lite::Element& newElement(const xml::lite::QName&, xml::lite::Element& prnt); + xml::lite::Element* newElement(const std::string& name, xml::lite::Element* prnt) const; xml::lite::Element& newElement(const std::string& name, xml::lite::Element& prnt) const; - - static - xml::lite::Element* newElement(const std::string& name, const std::string& uri, xml::lite::Element* prnt = nullptr); - static xml::lite::Element& newElement(const std::string& name, const std::string& uri, xml::lite::Element& prnt); - - static - xml::lite::Element* newElement(const std::string& name, const std::string& uri, - const std::string& characterData, xml::lite::Element* parent = nullptr); - #if CODA_OSS_lib_char8_t - static xml::lite::Element* newElement(const std::string& name, const std::string& uri, - const std::u8string& characterData, xml::lite::Element* parent = nullptr); - #endif - + static xml::lite::Element* newElement(const xml::lite::QName&, const std::string& characterData, xml::lite::Element* parent); + static xml::lite::Element& newElement(const xml::lite::QName&, const std::string& characterData, xml::lite::Element& parent); + static xml::lite::Element* newElement(const xml::lite::QName&, const std::u8string& characterData, xml::lite::Element* parent); + static xml::lite::Element& newElement(const xml::lite::QName&, const std::u8string& characterData, xml::lite::Element& parent); template - static xml::lite::Element* newElement(const T* pElement, const std::string& name, const std::string& uri, - xml::lite::Element* parent = nullptr) + static xml::lite::Element* newElement(const T* pElement, const xml::lite::QName& name, xml::lite::Element* parent) { - return pElement == nullptr ? nullptr : newElement(name, uri, parent); + return pElement == nullptr ? nullptr : newElement(name, parent); } - // generic element creation methods, w/URI - xml::lite::Element& createString(const std::string& name, - const std::string& uri, const std::string& p, - xml::lite::Element&) const; - xml::lite::Element* createString(const std::string& name, - const std::string& uri, const std::string& p = "", - xml::lite::Element* parent = nullptr) const + template + static std::string six_toString(const T& t) { - return &createString(name, uri, p, *parent); + return ::six::toString(t); } - #if CODA_OSS_lib_char8_t - xml::lite::Element* createString(const std::string& name, - const std::string& uri, const std::u8string& p, - xml::lite::Element* parent = nullptr) const; - #endif - xml::lite::Element& createString(const std::string& name, const std::string&, xml::lite::Element& parent) const; + // generic element creation methods, w/URI + xml::lite::Element& createString(const xml::lite::QName&, const std::string& p, xml::lite::Element& parent) const; + xml::lite::Element& createString(const xml::lite::QName&, const std::u8string& p, xml::lite::Element& parent) const; template - xml::lite::Element* createSixString(const std::string& name, - const std::string& uri, const T& t, - xml::lite::Element* parent = nullptr) const + xml::lite::Element& createSixString(const xml::lite::QName& name, const T& t, xml::lite::Element& parent) const // six::toString(t) isntead of t.toString() { - return createString(name, uri, toString(t), parent); + return createString(name, six_toString(t), parent); } + xml::lite::Element& createInt(const xml::lite::QName& name, const std::string& p, xml::lite::Element& parent) const; + xml::lite::Element& createInt(const xml::lite::QName& name, int p, xml::lite::Element& parent) const; + xml::lite::Element& createDouble(const xml::lite::QName&, double p, xml::lite::Element& parent) const; + xml::lite::Element& createDouble(const xml::lite::QName&, const std::optional& p, xml::lite::Element& parent) const; + xml::lite::Element* createOptionalDouble(const xml::lite::QName&, double p, xml::lite::Element& parent) const; + xml::lite::Element* createOptionalDouble(const xml::lite::QName&, const std::optional& p, xml::lite::Element& parent) const; + xml::lite::Element* createBooleanType(const xml::lite::QName&, BooleanType b, xml::lite::Element& parent) const; + xml::lite::Element& createDateTime(const xml::lite::QName&, const DateTime& p, xml::lite::Element& parent) const; + xml::lite::Element& createDate(const xml::lite::QName&, const DateTime& p, xml::lite::Element& parent) const; - template - xml::lite::Element& createStringFromEnum(const std::string& name, - const T& enumVal, - xml::lite::Element& parent) const + // generic element creation methods, using default URI + xml::lite::Element& createString(const std::string& name, const std::string&, xml::lite::Element& parent) const; + xml::lite::Element& createString(const std::string& name, const char* p, xml::lite::Element& parent) const { - if (six::Init::isUndefined(enumVal.value)) - { - throw six::UninitializedValueException( - Ctxt("Attempted use of uninitialized value")); - } - - return createString(name, - enumVal.toString(), - parent); + return createString_(name, p, parent); } - - xml::lite::Element* createInt(const std::string& name, const std::string& uri, const std::string& p, xml::lite::Element* parent = nullptr) const + template + xml::lite::Element& createString(const std::string& name, const T& t, xml::lite::Element& parent) const { - return createInt_(name, uri, p, parent); + return createString_(name, t.toString(), parent); } - xml::lite::Element* createInt(const std::string& name, const std::string& uri, int p = 0, xml::lite::Element* parent = nullptr) const + template + xml::lite::Element& createSixString(const std::string& name, const T& t, // six::toString(t) isntead of t.toString() + xml::lite::Element& parent) const { - return createInt_(name, uri, p, parent); + return createString_(name, six_toString(t), parent); } + template + xml::lite::Element& createStringFromEnum(const std::string& name, const T& enumVal, xml::lite::Element& parent) const + { + if (six::Init::isUndefined(enumVal.value)) + { + throw six::UninitializedValueException(Ctxt("Attempted use of uninitialized value")); + } - xml::lite::Element* createDouble(const std::string& name, - const std::string& uri, double p = 0, xml::lite::Element* parent = nullptr) const; - xml::lite::Element* createDouble(const std::string& name, - const std::string& uri, const std::optional& p, xml::lite::Element* parent = nullptr) const; - xml::lite::Element* createOptionalDouble(const std::string& name, - const std::string& uri, const double& p, xml::lite::Element* parent = nullptr) const; - xml::lite::Element* createOptionalDouble(const std::string& name, - const std::string& uri, const std::optional& p, xml::lite::Element* parent = nullptr) const; - - xml::lite::Element* createBooleanType(const std::string& name, - const std::string& uri, BooleanType b, xml::lite::Element* parent = nullptr) const; - - xml::lite::Element* createDateTime(const std::string& name, - const std::string& uri, const DateTime& p, xml::lite::Element* parent = nullptr) const; - - xml::lite::Element* createDateTime(const std::string& name, - const std::string& uri, const std::string& s, - xml::lite::Element* parent = nullptr) const; - - xml::lite::Element* createDate(const std::string& name, - const std::string& uri, const DateTime& p, xml::lite::Element* parent = nullptr) const; - - // generic element creation methods, using default URI - template - xml::lite::Element& createString(const std::string& name, const T& t, - xml::lite::Element& parent) const { - return * createString_(name, t.toString(), &parent); - } - template - xml::lite::Element* createSixString(const std::string& name, const T& t, // six::toString(t) isntead of t.toString() - xml::lite::Element* parent = nullptr) const { - return createString_(name, toString(t), parent); - } - xml::lite::Element* createString(const std::string& name, const char* p="", - xml::lite::Element* parent = nullptr) const { - return createString_(name, p, parent); + return createString(name, enumVal.toString(), parent); } template xml::lite::Element& createInt(const std::string& name, T p, xml::lite::Element& parent) const { - return * createInt_(name, gsl::narrow_cast(p), &parent); + return createInt_(name, gsl::narrow_cast(p), parent); } xml::lite::Element& createDouble(const std::string& name, double p, xml::lite::Element& parent ) const; - xml::lite::Element* createDouble(const std::string& name, const std::optional& p, - xml::lite::Element* parent = nullptr) const; - xml::lite::Element* createOptionalDouble(const std::string& name, const double& p, - xml::lite::Element* parent = nullptr) const; - xml::lite::Element* createOptionalDouble(const std::string& name, const std::optional& p, - xml::lite::Element* parent = nullptr) const; - xml::lite::Element* createBooleanType(const std::string& name, BooleanType b, - xml::lite::Element* parent = nullptr) const; - xml::lite::Element* createDateTime(const std::string& name, const DateTime& p, - xml::lite::Element* parent = nullptr) const; - xml::lite::Element* createDateTime(const std::string& name, - const std::string& s, xml::lite::Element* parent = nullptr) const; - xml::lite::Element* createDate(const std::string& name, const DateTime& p, - xml::lite::Element* parent = nullptr) const; + xml::lite::Element& createDouble(const std::string& name, const std::optional& p, xml::lite::Element& parent) const; + xml::lite::Element* createOptionalDouble(const std::string& name, double p, xml::lite::Element& parent) const; + xml::lite::Element* createOptionalDouble(const std::string& name, const std::optional& p, xml::lite::Element& parent) const; + xml::lite::Element* createBooleanType(const std::string& name, BooleanType b, xml::lite::Element&parent ) const; + xml::lite::Element& createDateTime(const std::string& name, const DateTime& p, xml::lite::Element& parent) const; + xml::lite::Element& createDate(const std::string& name, const DateTime& p, xml::lite::Element& parent) const; template void parseInt(const xml::lite::Element& element, T& value) const @@ -248,15 +248,9 @@ struct XmlLite final void parseDateTime(const xml::lite::Element& element, DateTime& value) const; - static void setAttribute(xml::lite::Element& e, const std::string& name, - const std::string& s, const std::string& uri = "") + static void setAttribute(xml::lite::Element& e, const xml::lite::QName& name, size_t i) { - setAttribute_(&e, name,s, uri); - } - static void setAttribute(xml::lite::Element& e, const std::string& name, - size_t i, const std::string& uri = "") - { - setAttribute_(&e, name, std::to_string(i), uri); + setAttribute(e, name, std::to_string(i)); } static xml::lite::Element* getOptional(const xml::lite::Element& parent, const std::string& tag); @@ -282,17 +276,14 @@ struct XmlLite final */ static xml::lite::Element& require(xml::lite::Element* element, const std::string& name); - static void setAttribute_(xml::lite::Element& e, const std::string& name, const std::string& v, const std::string& uri); + static void setAttribute(xml::lite::Element&, const xml::lite::QName&, const std::string& v); private: - xml::lite::Element* createInt_(const std::string& name, const std::string& uri, int p, xml::lite::Element* parent) const; - xml::lite::Element* createInt_(const std::string& name, const std::string& uri, const std::string& p, xml::lite::Element* parent) const; - xml::lite::Element* createInt_(const std::string& name, int p, xml::lite::Element* parent) const; - xml::lite::Element* createString_(const std::string& name, const std::string& p, xml::lite::Element* parent) const; - static void setAttribute_(xml::lite::Element* e, const std::string& name, const std::string& v, const std::string& uri); - void addClassAttributes(xml::lite::Element& elem, const std::string& type) const; - - const std::string mDefaultURI; + xml::lite::Element& createInt_(const std::string& name, int p, xml::lite::Element& parent) const; + xml::lite::Element& createString_(const std::string& name, const std::string& p, xml::lite::Element& parent) const; + xml::lite::QName makeQName(const std::string& name) const; + + const xml::lite::Uri mDefaultURI; const bool mAddClassAttributes; Logger mLogger; @@ -301,7 +292,7 @@ struct XmlLite final template<> inline xml::lite::Element& XmlLite::createString(const std::string& name, const std::string& p, xml::lite::Element& parent) const { - return *createString_(name, p, &parent); + return createString_(name, p, parent); } } diff --git a/six/modules/c++/six/source/Adapters.cpp b/six/modules/c++/six/source/Adapters.cpp index fdae55e81..1f8b2d7c0 100644 --- a/six/modules/c++/six/source/Adapters.cpp +++ b/six/modules/c++/six/source/Adapters.cpp @@ -310,7 +310,6 @@ NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, std::span buffer, size_t firstRow, const Data& data, bool doByteSwap) : NewMemoryWriteHandler(info, cast(buffer), firstRow, data, doByteSwap) { - const auto pixelType = data.getPixelType(); switch (data.getPixelType()) { case six::PixelType::MONO8I: diff --git a/six/modules/c++/six/source/Utilities.cpp b/six/modules/c++/six/source/Utilities.cpp index d34273165..30cf9b720 100644 --- a/six/modules/c++/six/source/Utilities.cpp +++ b/six/modules/c++/six/source/Utilities.cpp @@ -30,6 +30,7 @@ #include "six/Utilities.h" #include "six/XMLControl.h" #include "six/Data.h" +#include #define string_to_Enum(strValue, enum, type) if (strValue == #type) return enum::type #define Enum_to_string(value, enum, type) if (value == enum::type) return #type @@ -1151,10 +1152,9 @@ TReturn six_parseData(const XMLControlRegistry& xmlReg, ::io::InputStream& xmlStream, DataType dataType, const TSchemaPaths& schemaPaths, - logging::Logger& log) + logging::Logger& log, bool storeEncoding) { - xml::lite::MinidomParser xmlParser; - xmlParser.preserveCharacterData(true); + six::MinidomParser xmlParser(storeEncoding); try { xmlParser.parse(xmlStream); @@ -1163,9 +1163,7 @@ TReturn six_parseData(const XMLControlRegistry& xmlReg, { throw except::Exception(ex, Ctxt("Invalid XML data")); } - const xml::lite::Document* pDoc = xmlParser.getDocument(); - assert(pDoc != nullptr); - const auto& doc = *pDoc; + const auto& doc = getDocument(xmlParser); //! Check the root localName for the XML type std::string xmlType = doc.getRootElement()->getLocalName(); @@ -1191,17 +1189,17 @@ mem::auto_ptr six::parseData(const XMLControlRegistry& xmlReg, ::io::InputStream& xmlStream, DataType dataType, const std::vector& schemaPaths, - logging::Logger& log) + logging::Logger& log, bool storeEncoding) { - return six_parseData>(xmlReg, xmlStream, dataType, schemaPaths, log); + return six_parseData>(xmlReg, xmlStream, dataType, schemaPaths, log, storeEncoding); } std::unique_ptr six::parseData(const XMLControlRegistry& xmlReg, ::io::InputStream& xmlStream, DataType dataType, const std::vector* pSchemaPaths, - logging::Logger& log) + logging::Logger& log, bool storeEncoding) { - return six_parseData>(xmlReg, xmlStream, dataType, pSchemaPaths, log); + return six_parseData>(xmlReg, xmlStream, dataType, pSchemaPaths, log, storeEncoding); } mem::auto_ptr six::parseDataFromFile(const XMLControlRegistry& xmlReg, diff --git a/six/modules/c++/six/source/XMLControl.cpp b/six/modules/c++/six/source/XMLControl.cpp index 2816333c5..4bf3ed2f4 100644 --- a/six/modules/c++/six/source/XMLControl.cpp +++ b/six/modules/c++/six/source/XMLControl.cpp @@ -243,7 +243,7 @@ std::string XMLControl::getDefaultURI(const Data& data) std::string XMLControl::getVersionFromURI(const xml::lite::Document* doc) { assert(doc != nullptr); - const std::string uri = doc->getRootElement()->getUri(); + const auto uri = doc->getRootElement()->getUri(); if (!(str::startsWith(uri, "urn:SICD:") || str::startsWith(uri, "urn:SIDD:"))) { @@ -309,13 +309,14 @@ std::unique_ptr XMLControl::fromXMLImpl(const xml::lite::Document& doc) co } Data* XMLControl::fromXML(const xml::lite::Document* doc, - const std::vector& schemaPaths) + const std::vector& schemaPaths_) { - validate(doc, schemaPaths, mLog); - Data* const data = fromXMLImpl(doc); - assert(data != nullptr); - data->setVersion(getVersionFromURI(doc)); - return data; + std::vector schemaPaths; + std::transform(schemaPaths_.begin(), schemaPaths_.end(), std::back_inserter(schemaPaths), + [](const std::string& s) { return s; }); + + auto data = fromXML(*doc, &schemaPaths); + return data.release(); } std::unique_ptr XMLControl::fromXML(const xml::lite::Document& doc, const std::vector* pSchemaPaths) diff --git a/six/modules/c++/six/source/XMLParser.cpp b/six/modules/c++/six/source/XMLParser.cpp index a9571e477..e0113d77f 100644 --- a/six/modules/c++/six/source/XMLParser.cpp +++ b/six/modules/c++/six/source/XMLParser.cpp @@ -41,13 +41,13 @@ typedef xml::lite::Element* XMLElem; namespace six { XMLParser::XMLParser(const std::string& defaultURI, bool addClassAttributes, - logging::Logger* log, bool ownLog) : mXmlLite(defaultURI, addClassAttributes, log, ownLog) + logging::Logger* log, bool ownLog) : mXmlLite(xml::lite::Uri(defaultURI), addClassAttributes, log, ownLog) { } XMLParser::XMLParser(const std::string& defaultURI, bool addClassAttributes, std::unique_ptr&& log) : - mXmlLite(defaultURI, addClassAttributes, std::move(log)) { } + mXmlLite(xml::lite::Uri(defaultURI), addClassAttributes, std::move(log)) { } XMLParser::XMLParser(const std::string& defaultURI, bool addClassAttributes, logging::Logger& log) : - mXmlLite(defaultURI, addClassAttributes, log) { } + mXmlLite(xml::lite::Uri(defaultURI), addClassAttributes, log) { } XMLElem XMLParser::newElement(const std::string& name, XMLElem parent) const { @@ -61,58 +61,55 @@ xml::lite::Element& XMLParser::newElement(const std::string& name, xml::lite::El XMLElem XMLParser::newElement(const std::string& name, const std::string& uri, XMLElem parent) { - return XmlLite::newElement(name, uri, parent); + return XmlLite::newElement(xml::lite::QName(xml::lite::Uri(uri), name), parent); } xml::lite::Element& XMLParser::newElement(const std::string& name, const std::string& uri, xml::lite::Element& parent) { - return XmlLite::newElement(name, uri, parent); + return XmlLite::newElement(xml::lite::QName(xml::lite::Uri(uri), name), parent); } XMLElem XMLParser::newElement(const std::string& name, const std::string& uri, const std::string& characterData, XMLElem parent) { - return XmlLite::newElement(name, uri, characterData, parent); + return XmlLite::newElement(xml::lite::QName(xml::lite::Uri(uri), name), characterData, parent); } -#if CODA_OSS_lib_char8_t XMLElem XMLParser::newElement(const std::string& name, const std::string& uri, const std::u8string& characterData, XMLElem parent) { - return XmlLite::newElement(name, uri, characterData, parent); + return XmlLite::newElement(xml::lite::QName(xml::lite::Uri(uri), name), characterData, parent); } -#endif XMLElem XMLParser::createString(const std::string& name, const std::string& uri, const std::string& p, XMLElem parent) const { - return mXmlLite.createString(name, uri, p, parent); + assert(parent != nullptr); + return &mXmlLite.createString(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } -#if CODA_OSS_lib_char8_t XMLElem XMLParser::createString(const std::string& name, const std::string& uri, const std::u8string& p, XMLElem parent) const { - return mXmlLite.createString(name, uri, p, parent); + assert(parent != nullptr); + return &mXmlLite.createString(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } -#endif -XMLElem XMLParser::createDouble(const std::string& name, - const std::string& uri, double p, XMLElem parent) const +XMLElem XMLParser::createDouble(const std::string& name, const std::string& uri, double p, XMLElem parent) const { - return mXmlLite.createDouble(name, uri, p, parent); + assert(parent != nullptr); + return &mXmlLite.createDouble(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } -XMLElem XMLParser::createDouble(const std::string& name, - const std::string& uri, const std::optional& p, XMLElem parent) const +XMLElem XMLParser::createDouble(const std::string& name, const std::string& uri, const std::optional& p, XMLElem parent) const { - return createDouble(name, uri, p.value(), parent); + assert(parent != nullptr); + return &mXmlLite.createDouble(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } xml::lite::Element& XMLParser::createDouble(const std::string& name, double p, xml::lite::Element& parent) const { return mXmlLite.createDouble(name, p, parent); } -XMLElem XMLParser::createDouble(const std::string& name, double p, - XMLElem parent) const +XMLElem XMLParser::createDouble(const std::string& name, double p, XMLElem parent) const { assert(parent != nullptr); return &createDouble(name, p, *parent); @@ -123,59 +120,65 @@ XMLElem XMLParser::createDouble(const std::string& name, const std::optional& p, XMLElem parent) const +XMLElem XMLParser::createOptionalDouble(const std::string& name, const std::string& uri, const std::optional& p, XMLElem parent) const { - return mXmlLite.createOptionalDouble(name, uri, p, parent); + assert(parent != nullptr); + return mXmlLite.createOptionalDouble(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } -XMLElem XMLParser::createOptionalDouble(const std::string& name, const double& p, - XMLElem parent) const +XMLElem XMLParser::createOptionalDouble(const std::string& name, double p, XMLElem parent) const { - return mXmlLite.createOptionalDouble(name, p, parent); + assert(parent != nullptr); + return mXmlLite.createOptionalDouble(name, p, *parent); } -XMLElem XMLParser::createOptionalDouble(const std::string& name, const std::optional& p, - XMLElem parent) const +XMLElem XMLParser::createOptionalDouble(const std::string& name, const std::optional& p, XMLElem parent) const { - return mXmlLite.createOptionalDouble(name, p, parent); + assert(parent != nullptr); + return mXmlLite.createOptionalDouble(name, p, *parent); } XMLElem XMLParser::createBooleanType(const std::string& name, const std::string& uri, BooleanType p, XMLElem parent) const { - return mXmlLite.createBooleanType(name, uri, p, parent); + assert(parent != nullptr); + return mXmlLite.createBooleanType(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } XMLElem XMLParser::createBooleanType(const std::string& name, BooleanType p, XMLElem parent) const { - return mXmlLite.createBooleanType(name, p, parent); + assert(parent != nullptr); + return mXmlLite.createBooleanType(name, p, *parent); } XMLElem XMLParser::createDateTime(const std::string& name, const std::string& uri, const DateTime& p, XMLElem parent) const { - return mXmlLite.createDateTime(name, uri, p, parent); + assert(parent != nullptr); + return &mXmlLite.createDateTime(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } XMLElem XMLParser::createDateTime(const std::string& name, const DateTime& p, XMLElem parent) const { - return mXmlLite.createDateTime(name, p, parent); + assert(parent != nullptr); + return &mXmlLite.createDateTime(name, p, *parent); } XMLElem XMLParser::createDate(const std::string& name, const std::string& uri, const DateTime& p, XMLElem parent) const { - return mXmlLite.createDate(name, uri, p, parent); + assert(parent != nullptr); + return &mXmlLite.createDate(xml::lite::QName(xml::lite::Uri(uri), name), p, *parent); } XMLElem XMLParser::createDate(const std::string& name, const DateTime& p, XMLElem parent) const { - return mXmlLite.createDate(name, p, parent); + assert(parent != nullptr); + return &mXmlLite.createDate(name, p, *parent); } xml::lite::Element& XMLParser::getFirstAndOnly(const xml::lite::Element& parent, const std::string& tag) diff --git a/six/modules/c++/six/source/XmlLite.cpp b/six/modules/c++/six/source/XmlLite.cpp index 840d63369..d8c39dc3b 100644 --- a/six/modules/c++/six/source/XmlLite.cpp +++ b/six/modules/c++/six/source/XmlLite.cpp @@ -35,282 +35,290 @@ namespace six { - XmlLite::XmlLite(const std::string& defaultURI, bool addClassAttributes, + struct MinidomParser::Impl final + { + xml::lite::MinidomParser parser; + Impl(bool storeEncoding = false) : parser(storeEncoding) {} + Impl(const Impl&) = delete; + Impl& operator=(const Impl&) = delete; + Impl(Impl&&) = delete; + Impl& operator=(Impl&&) = delete; + }; + + // storeEncoding=true allows parsing of UTF-8 data; but it might break legacy code. + MinidomParser::MinidomParser(bool storeEncoding) + : pImpl(std::make_unique(storeEncoding)) + { + } + MinidomParser::~MinidomParser() = default; + + void MinidomParser::parse(io::InputStream& is, int size) + { + pImpl->parser.parse(is, size); + } + void MinidomParser::clear() + { + pImpl->parser.clear(); + } + + const xml::lite::Document& MinidomParser::getDocument() const + { + return *(pImpl->parser.getDocument()); + } + void MinidomParser::getDocument(std::unique_ptr& pDoc) + { + pImpl->parser.getDocument(pDoc); + } + + void MinidomParser::preserveCharacterData(bool preserve) + { + pImpl->parser.preserveCharacterData(preserve); + } + + XmlLite::XmlLite(const xml::lite::Uri& defaultURI, bool addClassAttributes, logging::Logger* log, bool ownLog) : mDefaultURI(defaultURI), mAddClassAttributes(addClassAttributes) { setLogger(log, ownLog); } - XmlLite::XmlLite(const std::string& defaultURI, bool addClassAttributes, std::unique_ptr&& log) : + XmlLite::XmlLite(const xml::lite::Uri& defaultURI, bool addClassAttributes, std::unique_ptr&& log) : mDefaultURI(defaultURI), mAddClassAttributes(addClassAttributes), mLogger(std::move(log)) { } - XmlLite::XmlLite(const std::string& defaultURI, bool addClassAttributes, logging::Logger& log) : + XmlLite::XmlLite(const xml::lite::Uri& defaultURI, bool addClassAttributes, logging::Logger& log) : mDefaultURI(defaultURI), mAddClassAttributes(addClassAttributes), mLogger(log) { } xml::lite::Element* XmlLite::newElement(const std::string& name, xml::lite::Element* parent) const { - return newElement(name, mDefaultURI, parent); + const auto qname = makeQName(name); + // prefer reference version as that minimizes the opportunity for memory leaks + return parent != nullptr ? &newElement(qname, *parent) : newElement(qname, parent); } xml::lite::Element& XmlLite::newElement(const std::string& name, xml::lite::Element& parent) const { - return *newElement(name, mDefaultURI, &parent); + return newElement(makeQName(name), parent); } - -xml::lite::Element* XmlLite::newElement(const std::string& name, - const std::string& uri, xml::lite::Element* parent) +xml::lite::Element* XmlLite::newElement(const xml::lite::QName& name, xml::lite::Element* parent) { - return newElement(name, uri, "", parent); + // prefer reference version as that minimizes the opportunity for memory leaks + return parent != nullptr ? &newElement(name, *parent) : newElement(name, "", parent); } -xml::lite::Element& XmlLite::newElement(const std::string& name, const std::string& uri, xml::lite::Element& parent) +xml::lite::Element& XmlLite::newElement(const xml::lite::QName& name, xml::lite::Element& parent) { - return *newElement(name, uri, "", &parent); + return newElement(name, "", parent); } -static void addClassAttributes_(xml::lite::Element& elem, const std::string& type, const std::string& uri) +static void addClassAttributes(xml::lite::Element& elem, const std::string& type, const xml::lite::Uri& uri) { - XmlLite::setAttribute_(elem, "class", type, uri); + XmlLite::setAttribute(elem, xml::lite::QName(uri, "class"), type); } -void XmlLite::addClassAttributes(xml::lite::Element& elem, const std::string& type) const + +xml::lite::Element* XmlLite::newElement(const xml::lite::QName& name, const std::string& characterData, xml::lite::Element* parent) { - if (mAddClassAttributes) + if (parent != nullptr) { - addClassAttributes_(elem, type, getDefaultURI()); + // prefer reference version as that minimizes the opportunity for memory leaks + return &newElement(name, characterData, *parent); } + return xml::lite::Element::create(name, characterData).release(); // caller must delete! } - -xml::lite::Element* XmlLite::newElement(const std::string& name, - const std::string& uri, const std::string& characterData, - xml::lite::Element* parent) +xml::lite::Element& XmlLite::newElement(const xml::lite::QName& name, const std::string& characterData, xml::lite::Element& parent) { - xml::lite::Element* elem = xml::lite::Element::create(name, uri, characterData).release(); - if (parent) - parent->addChild(elem); - return elem; + auto elem = xml::lite::Element::create(name, characterData); + return parent.addChild(std::move(elem)); } -#if CODA_OSS_lib_char8_t -xml::lite::Element* XmlLite::newElement(const std::string& name, - const std::string& uri, const std::u8string& characterData, - xml::lite::Element* parent) +xml::lite::Element* XmlLite::newElement(const xml::lite::QName& name, const std::u8string& characterData, xml::lite::Element* parent) { - xml::lite::Element* elem = new xml::lite::Element(name, uri, characterData); - if (parent) - parent->addChild(elem); - return elem; -} -#endif + if (parent != nullptr) + { + // prefer reference version as that minimizes the opportunity for memory leaks + return &newElement(name, characterData, *parent); + } -xml::lite::Element& XmlLite::createString(const std::string& name, - const std::string& uri, const std::string& p, xml::lite::Element& parent) const + return xml::lite::Element::create(name, characterData).release(); // caller must delete! +} +xml::lite::Element& XmlLite::newElement(const xml::lite::QName& name, const std::u8string& characterData, xml::lite::Element& parent) { - auto pElem = newElement(name, uri, p, &parent); - auto& elem = *pElem; - addClassAttributes(elem, "xs:string"); + auto elem = xml::lite::Element::create(name, characterData); + return parent.addChild(std::move(elem)); +} +xml::lite::Element& XmlLite::createString(const xml::lite::QName& name, const std::string& p, xml::lite::Element& parent) const +{ + auto& elem = newElement(name, p, parent); + if (mAddClassAttributes) + { + addClassAttributes(elem, "xs:string", getDefaultURI()); + } return elem; } xml::lite::Element& XmlLite::createString(const std::string& name, const std::string& p, xml::lite::Element& parent) const { - return createString(name, mDefaultURI, p, parent); + return createString(makeQName(name), p, parent); } - -#if CODA_OSS_lib_char8_t -xml::lite::Element* XmlLite::createString(const std::string& name, - const std::string& uri, const std::u8string& p, xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createString(const xml::lite::QName& name, const std::u8string& p, xml::lite::Element& parent) const { - xml::lite::Element* const elem = newElement(name, uri, p, parent); - addClassAttributes(*elem, "xs:string"); - + auto& elem = newElement(name, p, parent); + if (mAddClassAttributes) + { + addClassAttributes(elem, "xs:string", getDefaultURI()); + } return elem; } -#endif -xml::lite::Element* XmlLite::createString_(const std::string& name, - const std::string& p, xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createString_(const std::string& name, + const std::string& p, xml::lite::Element& parent) const { - return createString(name, mDefaultURI, p, parent); + return createString(makeQName(name), p, parent); } template -static std::string toString(const std::string& name, T p, const xml::lite::Element* parent) +static std::string toString(const xml::lite::QName& name, const T& p, const xml::lite::Element& parent) { - assert(parent != nullptr); try { return str::toString(p); } catch (const except::Exception& ex) { - std::string message("Unable to create " + name + " in element " - + parent->getLocalName() + ": " + ex.getMessage()); + std::string message("Unable to create " + name.getName() + " in element " + + parent.getLocalName() + ": " + ex.getMessage()); throw except::Exception(Ctxt(message)); } } template -inline std::string toString_(const std::string& name, const T& v, const xml::lite::Element& parent) +inline std::string toString_(const xml::lite::QName& name, const T& v, const xml::lite::Element& parent) { - return toString(name, v, &parent); + return toString(name, v, parent); } template -static xml::lite::Element& createValue(const std::string& name, const std::string& uri, +static xml::lite::Element& createValue(const xml::lite::QName& name, const T& v, xml::lite::Element& parent, - bool addClassAttributes, const std::string& type, const std::string& attributeUri, + bool bAddClassAttributes, const std::string& type, const xml::lite::Uri& attributeUri, ToString toString) { - auto& elem = xml::lite::addNewElement(xml::lite::QName(uri, name), v, parent, toString); - if (addClassAttributes) + auto& elem = xml::lite::addNewElement(name, v, parent, toString); + if (bAddClassAttributes) { - addClassAttributes_(elem, type, attributeUri); + addClassAttributes(elem, type, attributeUri); } return elem; } template -inline xml::lite::Element& createValue(const std::string& name, const std::string& uri, +inline xml::lite::Element& createValue(const xml::lite::QName& name, const T& v, xml::lite::Element& parent, - bool addClassAttributes, const std::string& type, const std::string& attributeUri) + bool addClassAttributes, const std::string& type, const xml::lite::Uri& attributeUri) { const auto toString = [&](const T& v) { return toString_(name, v, parent); }; - return createValue(name, uri, v, parent, addClassAttributes, type, attributeUri, toString); + return createValue(name, v, parent, addClassAttributes, type, attributeUri, toString); } template -static xml::lite::Element* createOptionalValue(const std::string& name, const std::string& uri, +static xml::lite::Element* createOptionalValue(const xml::lite::QName& name, const std::optional& v, xml::lite::Element& parent, - bool addClassAttributes, const std::string& type, const std::string& attributeUri) + bool addClassAttributes, const std::string& type, const xml::lite::Uri& attributeUri) { if (v.has_value()) { - return &createValue(name, uri, v.value(), parent, addClassAttributes, type, attributeUri); + return &createValue(name, v.value(), parent, addClassAttributes, type, attributeUri); } return nullptr; } - -xml::lite::Element* XmlLite::createInt_(const std::string& name, const std::string& uri, - int p, xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createInt(const xml::lite::QName& name,int p, xml::lite::Element& parent) const { - assert(parent != nullptr); - return &createValue(name, uri, p, *parent, mAddClassAttributes, "xs:int", getDefaultURI()); + return createValue(name, p, parent, mAddClassAttributes, "xs:int", getDefaultURI()); } -xml::lite::Element* XmlLite::createInt_(const std::string& name, const std::string& uri, - const std::string& p, xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createInt(const xml::lite::QName& name, const std::string& p, xml::lite::Element& parent) const { - assert(parent != nullptr); - xml::lite::Element* const elem = newElement(name, uri, p, parent); - addClassAttributes(*elem, "xs:int"); + auto& elem = newElement(name, p, parent); + if (mAddClassAttributes) + { + addClassAttributes(elem, "xs:int", getDefaultURI()); + } return elem; } -xml::lite::Element* XmlLite::createInt_(const std::string& name, int p, xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createInt_(const std::string& name, int p, xml::lite::Element& parent) const { - return createInt(name, mDefaultURI, p, parent); + return createInt(makeQName(name), p, parent); } -xml::lite::Element* XmlLite::createDouble(const std::string& name, - const std::string& uri, double p, xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createDouble(const xml::lite::QName& name, double p, xml::lite::Element& parent) const { - assert(parent != nullptr); - p = value(p); // be sure this is initialized; throws if not - return &createValue(name, uri, p, *parent, mAddClassAttributes, "xs::double", getDefaultURI()); + return createValue(name, p, parent, mAddClassAttributes, "xs::double", getDefaultURI()); } -xml::lite::Element& XmlLite::createDouble(const std::string& name, double p, - xml::lite::Element& parent) const +xml::lite::Element& XmlLite::createDouble(const xml::lite::QName& name, const std::optional& p, xml::lite::Element& parent) const { - return *createDouble(name, mDefaultURI, p, &parent); + return createDouble(name, p.value(), parent); } -xml::lite::Element* XmlLite::createDouble(const std::string& name, const std::optional& p, - xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createDouble(const std::string& name, double p, xml::lite::Element& parent) const { - return createDouble(name, mDefaultURI, p.value(), parent); + return createDouble(makeQName(name), p, parent); +} +xml::lite::Element& XmlLite::createDouble(const std::string& name, const std::optional& p, xml::lite::Element& parent) const +{ + return createDouble(name, p.value(), parent); } -xml::lite::Element* XmlLite::createOptionalDouble(const std::string& name, - const std::string& uri, const double& p, xml::lite::Element* parent) const +xml::lite::Element* XmlLite::createOptionalDouble(const xml::lite::QName& name, double p, xml::lite::Element& parent) const { - return Init::isDefined(p) ? createDouble(name, uri, p, parent) : nullptr; + return Init::isDefined(p) ? &createDouble(name, p, parent) : nullptr; } -xml::lite::Element* XmlLite::createOptionalDouble(const std::string& name, - const std::string& uri, const std::optional& p, xml::lite::Element* parent) const +xml::lite::Element* XmlLite::createOptionalDouble(const std::string& name, double p, xml::lite::Element& parent) const { - assert(parent != nullptr); - return createOptionalValue(name, uri, p, *parent, mAddClassAttributes, "xs::double", getDefaultURI()); + return createOptionalDouble(makeQName(name), p, parent); } -xml::lite::Element* XmlLite::createOptionalDouble(const std::string& name, const double& p, - xml::lite::Element* parent) const +xml::lite::Element* XmlLite::createOptionalDouble(const xml::lite::QName& name, const std::optional& p, xml::lite::Element& parent) const { - return createOptionalDouble(name, mDefaultURI, p, parent); + return createOptionalValue(name, p, parent, mAddClassAttributes, "xs::double", getDefaultURI()); } -xml::lite::Element* XmlLite::createOptionalDouble(const std::string& name, const std::optional& p, - xml::lite::Element* parent) const +xml::lite::Element* XmlLite::createOptionalDouble(const std::string& name, const std::optional& p, xml::lite::Element& parent) const { - return createOptionalDouble(name, mDefaultURI, p, parent); + return createOptionalDouble(makeQName(name), p, parent); } -xml::lite::Element* XmlLite::createBooleanType(const std::string& name, - const std::string& uri, BooleanType p, xml::lite::Element* parent) const +xml::lite::Element* XmlLite::createBooleanType(const xml::lite::QName& name, BooleanType p, xml::lite::Element& parent) const { if (p == six::BooleanType::NOT_SET) { return nullptr; } - assert(parent != nullptr); const auto toString = [&](const BooleanType& v) { return six::toString(v); }; - return &createValue(name, uri, p, *parent, + return &createValue(name, p, parent, mAddClassAttributes, "xs:boolean", getDefaultURI(), toString); } -xml::lite::Element* XmlLite::createBooleanType(const std::string& name, BooleanType p, - xml::lite::Element* parent) const +xml::lite::Element* XmlLite::createBooleanType(const std::string& name, BooleanType p, xml::lite::Element& parent) const { - return createBooleanType(name, mDefaultURI, p, parent); + return createBooleanType(makeQName(name), p, parent); } -xml::lite::Element* XmlLite::createDateTime(const std::string& name, - const std::string& uri, const std::string& s, xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createDateTime(const xml::lite::QName& name, const DateTime& p, xml::lite::Element& parent) const { - assert(parent != nullptr); - return &createValue(name, uri, s, *parent, + return createValue(name, six::toString(p), parent, mAddClassAttributes, "xs:dateTime", getDefaultURI()); } -xml::lite::Element* XmlLite::createDateTime(const std::string& name, - const std::string& s, xml::lite::Element* parent) const -{ - return createDateTime(name, mDefaultURI, s, parent); -} -xml::lite::Element* XmlLite::createDateTime(const std::string& name, - const std::string& uri, const DateTime& p, xml::lite::Element* parent) const -{ - assert(parent != nullptr); - - const auto toString = [&](const DateTime& v) { return six::toString(v); }; - return &createValue(name, uri, p, *parent, - mAddClassAttributes, "xs:dateTime", getDefaultURI(), - toString); -} -xml::lite::Element* XmlLite::createDateTime(const std::string& name, const DateTime& p, - xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createDateTime(const std::string& name, const DateTime& p, xml::lite::Element& parent) const { - return createDateTime(name, mDefaultURI, p, parent); + return createDateTime(makeQName(name), p, parent); } -xml::lite::Element* XmlLite::createDate(const std::string& name, - const std::string& uri, const DateTime& p, xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createDate(const xml::lite::QName& name, const DateTime& p, xml::lite::Element& parent) const { - assert(parent != nullptr); - const auto toString = [&](const DateTime& p) { return p.format("%Y-%m-%d"); }; - return &createValue(name, uri, p, *parent, + return createValue(name, p, parent, mAddClassAttributes, "xs:date", getDefaultURI(), toString); } -xml::lite::Element* XmlLite::createDate(const std::string& name, const DateTime& p, - xml::lite::Element* parent) const +xml::lite::Element& XmlLite::createDate(const std::string& name, const DateTime& p, + xml::lite::Element& parent) const { - return createDate(name, mDefaultURI, p, parent); + return createDate(makeQName(name), p, parent); } xml::lite::Element& XmlLite::getFirstAndOnly(const xml::lite::Element& parent, const std::string& tag) @@ -332,21 +340,13 @@ xml::lite::Element& XmlLite::require(xml::lite::Element* element, const std::str return *element; } -void XmlLite::setAttribute_(xml::lite::Element& e, const std::string& name, - const std::string& v, const std::string& uri) +void XmlLite::setAttribute(xml::lite::Element& e, const xml::lite::QName& name, const std::string& v) { xml::lite::AttributeNode node; - node.setUri(uri); node.setQName(name); node.setValue(v); e.getAttributes().add(node); } -void XmlLite::setAttribute_(xml::lite::Element* e, const std::string& name, - const std::string& v, const std::string& uri) -{ - assert(e != nullptr); - setAttribute_(*e, name, v, uri); -} template static bool parseValue(logging::Logger& log, TGetValue getValue) @@ -443,4 +443,9 @@ void XmlLite::parseDateTime(const xml::lite::Element& element, DateTime& value) { value = castValue(element, six::toType); } + +xml::lite::QName XmlLite::makeQName(const std::string& name) const +{ + return xml::lite::QName(getDefaultURI(), name); +} } diff --git a/six/projects/csm/source/SICDSensorModel.cpp b/six/projects/csm/source/SICDSensorModel.cpp index 133dc7433..25306a1e7 100644 --- a/six/projects/csm/source/SICDSensorModel.cpp +++ b/six/projects/csm/source/SICDSensorModel.cpp @@ -30,6 +30,7 @@ #include #include #include +#include namespace six { @@ -120,8 +121,8 @@ void SICDSensorModel::initializeFromISD(const csm::Nitf21Isd& isd) try { // Check for the first SICD DES and parse it - xml::lite::Document* sicdXML = nullptr; - xml::lite::MinidomParser domParser; + const xml::lite::Document* sicdXML = nullptr; + six::MinidomParser domParser; const std::vector< csm::Des>& desList(isd.fileDess()); for (const auto& desListItem : desList) @@ -144,11 +145,10 @@ void SICDSensorModel::initializeFromISD(const csm::Nitf21Isd& isd) domParser.clear(); domParser.parse(stream); - const std::string localName = domParser.getDocument()-> - getRootElement()->getLocalName(); + const auto localName = getDocument(domParser).getRootElement()->getLocalName(); if (localName == "SICD") { - sicdXML = domParser.getDocument(); + sicdXML = &domParser.getDocument(); break; } else if (localName == "SIDD") @@ -206,7 +206,7 @@ void SICDSensorModel::initializeFromISD(const csm::Nitf21Isd& isd) bool SICDSensorModel::containsComplexDES(const csm::Nitf21Isd& isd) { - xml::lite::MinidomParser domParser; + six::MinidomParser domParser; const std::vector< csm::Des>& desList(isd.fileDess()); for (const auto& desListItem : desList) @@ -223,8 +223,7 @@ bool SICDSensorModel::containsComplexDES(const csm::Nitf21Isd& isd) domParser.clear(); domParser.parse(stream); - const std::string localName = domParser.getDocument()-> - getRootElement()->getLocalName(); + const auto localName = getDocument(domParser).getRootElement()->getLocalName(); if (localName == "SICD") { return true; @@ -419,7 +418,7 @@ void SICDSensorModel::replaceModelStateImpl(const std::string& sensorModelState) io::StringStream stream; stream.write(sensorModelXML); - xml::lite::MinidomParser domParser; + six::MinidomParser domParser; domParser.parse(stream); six::XMLControlRegistry xmlRegistry; @@ -433,7 +432,7 @@ void SICDSensorModel::replaceModelStateImpl(const std::string& sensorModelState) mSensorModelState = sensorModelState; mData.reset(reinterpret_cast(control->fromXML( - domParser.getDocument(), mSchemaDirs))); + &domParser.getDocument(), mSchemaDirs))); reinitialize(); } catch (const except::Exception& ex) diff --git a/six/projects/csm/source/SIDDSensorModel.cpp b/six/projects/csm/source/SIDDSensorModel.cpp index 2dc0a002a..11f8a5521 100644 --- a/six/projects/csm/source/SIDDSensorModel.cpp +++ b/six/projects/csm/source/SIDDSensorModel.cpp @@ -32,6 +32,7 @@ #include #include #include +#include namespace six { @@ -158,8 +159,8 @@ void SIDDSensorModel::initializeFromISD(const csm::Nitf21Isd& isd, // Check for the SIDD DES associated with imageIndex and parse it // DES's are always in the same order as the images, so we just have to // find the Nth DES - xml::lite::Document* siddXML = nullptr; - xml::lite::MinidomParser domParser; + const xml::lite::Document* siddXML = nullptr; + six::MinidomParser domParser; size_t numSIDD = 0; const std::vector< csm::Des>& desList(isd.fileDess()); @@ -183,12 +184,11 @@ void SIDDSensorModel::initializeFromISD(const csm::Nitf21Isd& isd, domParser.clear(); domParser.parse(stream); - if (domParser.getDocument()->getRootElement()->getLocalName() - == "SIDD") + if (getDocument(domParser).getRootElement()->getLocalName() == "SIDD") { if (numSIDD == imageIndex) { - siddXML = domParser.getDocument(); + siddXML = &domParser.getDocument(); break; } ++numSIDD; @@ -239,7 +239,7 @@ void SIDDSensorModel::initializeFromISD(const csm::Nitf21Isd& isd, bool SIDDSensorModel::containsDerivedDES(const csm::Nitf21Isd& isd) { - xml::lite::MinidomParser domParser; + six::MinidomParser domParser; const std::vector< csm::Des>& desList(isd.fileDess()); for (const auto& desListItem : desList) @@ -256,8 +256,7 @@ bool SIDDSensorModel::containsDerivedDES(const csm::Nitf21Isd& isd) domParser.clear(); domParser.parse(stream); - if (domParser.getDocument()->getRootElement()->getLocalName() - == "SIDD") + if (getDocument(domParser).getRootElement()->getLocalName() == "SIDD") { return true; } @@ -411,7 +410,7 @@ void SIDDSensorModel::replaceModelStateImpl(const std::string& sensorModelState) io::StringStream stream; stream.write(sensorModelXML); - xml::lite::MinidomParser domParser; + six::MinidomParser domParser; domParser.parse(stream); six::XMLControlRegistry xmlRegistry; @@ -425,7 +424,7 @@ void SIDDSensorModel::replaceModelStateImpl(const std::string& sensorModelState) mSensorModelState = sensorModelState; mData.reset(reinterpret_cast(control->fromXML( - domParser.getDocument(), mSchemaDirs))); + &domParser.getDocument(), mSchemaDirs))); reinitialize(); } catch (const except::Exception& ex) diff --git a/test_create_sicd_from_mem_32f.sicd b/test_create_sicd_from_mem_32f.sicd new file mode 100644 index 0000000000000000000000000000000000000000..f316bb313689af8a546aa9dc15a39bffcfa43df2 GIT binary patch literal 8006 zcmeHMTW{Mq7S2yG@~|(3C0-;^3Ro>%C(amk9Ix%BZC(n&Q8LEbQbu-W(mu^U+rPHo zAtm}!r)e=kfx)hjSiGF`kvxazLTcEb_L%TEWAaUp@s@i86PybX^EgZ-oAkS6Du5?VM*lr%jNQ`;Sk^)E>F=)>qd zF*t-|8+K>(zpA8NDSWGD1;-i*i*c(pygcnsMuU%&4k~!07@rGl{xBZ$FbRS{yhjy} zsfH{xRjEuhu~jJpQ;lWto(;RA)#@9pA%3B^e{Cvk1SHZQ{S&O9eNZbDReHF`TDC;L z*mp;N(hr{h{CRZrPyFN0ys3VA_Tggi>9jNLeCl2fr)R^d8I67z|GSu(QZk_jOEI%2 z=hNn*E#fJUPr~FxvTL`jX9{Emt*dhJu*_S$b(*i{cSY+Tt^V?UkuURNovr6(LG80@ zes9a=48+A62IfI`<`IlXZ5Fj9n=*D{{;nUY;>6e($e^R2_Pi1pE=Xi364Az{^i&We zg2n2U;2w!BPDI@ia>=-i3F4`A zos2H0gZ}w1Q|-Gp?QcG%3)r`q4^M8n=}`pfJt?^d~G z)~DGzpU#(gdcc-F&VwLg*V=bf+TY_hRdi>m9?c)~g;~P*Op4y8{sn%uziHOPhvm5Z zW0eZ+H$`g06q`0v)V+DNT7xoW+IMB!3If+kW!-yNEX*X*?}qoccqZMEnP94EJPtwQ zMJlAS8NlC=TxE;-4K22{nt#b(AIH%4RbH+0$JV^K$sb=IbF|bGcR*N#1+t|3EaCu5 z1TXMyE?IL46#?Ik^*m!xGpd9^4L`sb){LA-0+agz&d70M&>!MdPjEgXQql{}k24W( zjrSFo?-ZKW8{6*W^Src$v#eVGN>;c?-=9xD#ew#>nlyGss?WN;RDVbVp71zgp0o)f z@&oOENcG1wL5K>t7cd(;5eBsXG1b>;0Dm6EF~UThMnE6en1}%!41P)VAX|gVi^CWs zGN2feBue|#t_Nk2avTX{oFp>AXw;y8>71njK$%EFfv900?Nd8Q2$eQ;s;wQDRgqUK z)Vd?Lg-?3pUKbLiQ8pnBi%^o&s@&*1K@Qu(_R=hT;O&44fDRn!CLAKHg_z=3pml&m z{Ik6WLFLI{3lzcEhEg6XB2|YrHqu*yZ^Lvd2vwkJuePQe(A+Q$!EPd zD7mv22PIGU;-KUQUjTH+O*-FrUd?Z6H!@me1rnD*XNaW5I2PNYZ8mV;x$a+R-&8au z8{Ny!s9bz*mDNpN@z=-V*cJs9Df;HOt^D!6ERgM^n;p9vDA;i-Jqe2oBb?jqBl0$f zUnIuo*b$+n7pXu7GR)fop5S}9Fs-)ql90u5$fDY-#^8rbILy!YC*6+0FOxv!ZSqdv z!-cuF6E7B_;NYyE0BbeL!J)P8j!LsmJou1EsBKvZ#IeKULlceQt*A}RJT%fSC1(1a zl$evF^tU#HjoA9#6;kIqq=L>wP`pjR#GB&dhGa4!Ec_yx-H-Ft{d;Ulv~1P%40M?8@|(r${r~owVJ>+!S>xSqjEK;vr(!$;}LlQ zBu~x}kiVvl={BLU{xk?e$t3ewvx%RyTI|D6h1^4MwAVqH^pnOy<{>=AI1V|@T@$4S zhfM=fuZ<}%j=LbqgC@;;ngJ0F=!nrug>K?7{wEz3Rv&wzl3^G+c=Bv+O2!{a=14|y?z-CWEI!l0MF$R14@FId|))$|comR0jF);zDM zd#6Q@XTNuU&59yltm^C(!qC(-$|~GhtZ_tervvm%AHlH$adl!~_nRS?9T0Mvo3W@y z_aEEqGs#1*td{llL`^=b%9%Oe8$7CD2hz;}!JEF(xHp+)i@cZ3)}`^~do5-?eLAHZ zxr5PG+>|WNS8FrPhu2qg7(ZyrP{wpq)6=u!#6<*m1?#rq0JbU++( z{s!WZ!`p*05P<5;u-87M?GR^nT;;Oncuw~v1`9zW3X_<*2tzSo56pl}<~RA}?X=2f z|4zqP@>W$(kTb8xS#g)+#24baSb6xQB!pBrXo7art+mBn3@;IE#`f3?Q5x0zLg>zFN~1+6w1=!IDTt0g`si0TJ2tLJ;M> zfm9K0I+7?+B4D^1!RI&2;2IB%wT|=K#;Eq2bkl(M=D20N``1~P3rG7weLFNFI3bu|R6>M7 z-^0SQ1$ned@8t&h3Kl7Pb!Rei^QM}~#m!s4&A!+^dQ;8z(Hr;Aq+p+J?9=}O9)d&* literal 0 HcmV?d00001