From e13c3da4f223f35e037286614990b9c6735828c9 Mon Sep 17 00:00:00 2001 From: "J. Daniel Smith" Date: Tue, 13 Jun 2023 14:36:55 -0400 Subject: [PATCH] simplify AMP8I_PHS8I implementation (#659) * merge in develop/8AMPI_PHSI * 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 * unit-test breaks on Linux * trying to re-enable more unittests * test_valid_six unittests now working * 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 * trying to get the "french" SICD unit-test working * 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 * 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 * 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 * option to disable XML validation for SICD too * add overloads for other code * 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 * still can't get French XML working * Squashed commit of the following: 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 * 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 * Squashed commit of the following: commit ec79f1c0aac15ee0b36ed865b341f5d65e8ae0dd Author: Dan Smith Date: Mon Jan 3 11:12:43 2022 -0500 latest from coda-oss commit 22df5a95a3cbc3128780c63114a90181b4af33f8 Merge: db052a2d7 f1f19bdb6 Author: Dan Smith Date: Wed Dec 29 12:25:28 2021 -0500 Merge branch 'master' into develop/update-externals commit db052a2d7bc7db05a9ccadcc5e1554275334bd9c Author: Dan Smith Date: Wed Dec 29 09:17:08 2021 -0500 adjust for coda-oss changes commit 74ce242cf352a333684379cc9bd0278c0cf57571 Author: Dan Smith Date: Wed Dec 29 09:01:34 2021 -0500 latest from coda-oss 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 * we know the angle is in radians * explicitly dependency on 'units' * trying to fix broken build * "C++" -> "c++" * Squashed commit of the following: commit 0b4deaa12fade653e20ccb4460fc424bef89d4c6 Author: Dan Smith Date: Tue Jan 18 10:23:38 2022 -0500 turn off some code-analysis diagnostics commit 8797cd0b51617057496d9f89ea2a7602cabb13be Author: Dan Smith Date: Tue Jan 18 10:23:22 2022 -0500 account for str:: changes in coda-oss commit 920d0b79f1b91a1196171deaa61a91626ad7c44d Author: Dan Smith Date: Tue Jan 18 09:54:08 2022 -0500 latest from coda-oss commit 8e308afcf7b35945bdb3cb6c27cc94e63aa18b3b Author: Dan Smith Date: Mon Jan 17 15:26:32 2022 -0500 construct a std::span directly, no make_span() utility (generates CA diagnostic) commit d81a4d1aaac1cdaec1d9dc6a3838343e201d2b81 Author: Dan Smith Date: Mon Jan 17 14:06:58 2022 -0500 latest from coda-oss commit 06716b781a3e6f0cf440b0f1bc5251bec415287e Author: Dan Smith Date: Mon Jan 17 13:24:46 2022 -0500 finish renaming of sys/Filesystem.* to sys/filesystem.* commit b3d0b4b8f4ad15c64e9f000143e64da3df1b241e Author: Dan Smith Date: Mon Jan 17 13:24:07 2022 -0500 rename sys/Filesystem commit c30ae278f01cc681c83a3a32afa3f3db174cfa06 Author: Dan Smith Date: Mon Jan 17 12:30:21 2022 -0500 no more gsl::make_span commit e61dca0022fc39fdb9f4b63353dc93476fdd98bb Author: Dan Smith Date: Mon Jan 17 11:19:07 2022 -0500 sys/Bit.h -> std/bit commit bb67d052044cd1274d21b9b870f85da4b2040cf1 Author: Dan Smith Date: Mon Jan 17 10:49:02 2022 -0500 sys::Filesystem -> coda_oss::filesystem commit ef212eaf09f87ffec27e8c043217ffbd33b29d1f Author: Dan Smith Date: Mon Jan 17 10:02:46 2022 -0500 tweaks to get coda-oss building w/o warnings commit 6f6bfaacc537067b7d36a363297e716e14e2e075 Author: Dan Smith Date: Mon Jan 17 09:57:35 2022 -0500 latest from "nitro" commit 90be0243a2d384bc6ee0d81967240ee1d802bdb4 Author: Dan Smith Date: Mon Jan 17 09:54:33 2022 -0500 update to account for coda-oss changes commit 28632726cc356524c5a3db5117ead37731342824 Author: Dan Smith Date: Mon Jan 17 09:40:48 2022 -0500 latest drop from coda-oss commit 92632ef45f7369c3b0ebfdab65f4cdfa3f79f9d1 Author: Dan Smith Date: Tue Jan 11 09:59:47 2022 -0500 Utf-8 -> Windows-1252 commit 9b719935e8189bc3fbe57e4af4d221c3c49548c5 Author: Dan Smith Date: Mon Jan 10 17:20:25 2022 -0500 UTF-8 to native string conversion commit 38dbe6d88e800f360cc9ae388558b09e5b65d95a Merge: 74df9ee57 a11980f60 Author: Dan Smith Date: Mon Jan 10 17:19:11 2022 -0500 Merge branch 'master' into develop/update-externals commit 74df9ee570e4d62fb6c435b4b5e0cef84b57b9d9 Author: Dan Smith Date: Mon Jan 10 13:48:13 2022 -0500 noexcept(false) commit b5181bc210c3c2b0abc918842f6bd83b2a2d3907 Author: Dan Smith Date: Mon Jan 10 12:01:40 2022 -0500 remove comments with a backslash at the end commit 08f8f9c27f46e793d3bc3d9e65b38facc8293521 Author: Dan Smith Date: Mon Jan 10 11:36:15 2022 -0500 certain NITRO unittests don't work in externals/nitro commit dfc3ded9d3c52df1d038833afbdda94cf93e44ee Author: Dan Smith Date: Mon Jan 10 10:55:01 2022 -0500 descriptor updates from "nitro" commit c989c7ec700533a7ce0c294c09a80d68ed0ad6a4 Author: Dan Smith Date: Mon Jan 10 10:41:48 2022 -0500 fix #ifdef commit 571ab4869aeb70f35dcfa046a36aed875c822739 Author: Dan Smith Date: Mon Jan 10 10:27:53 2022 -0500 latest from "nitro" commit 26ba1a99646ac6db8b38d09e183be4318597efdd Author: Dan Smith Date: Mon Jan 10 10:26:37 2022 -0500 latest from coda-oss commit 28ab3500dc4c0f46ad61fd6356fdc76db8b4380e Merge: 2cd678b7e 28afa6552 Author: Dan Smith Date: Mon Jan 10 10:25:33 2022 -0500 Merge branch 'master' into develop/update-externals commit 2cd678b7e2d9fdd46906a6637903fd1325481ffc Author: Dan Smith Date: Thu Jan 6 15:39:49 2022 -0500 more tweaks to remove compiler warnings commit 5d8907616e5bdbf011a9ded45a7cf20e525789d8 Author: Dan Smith Date: Thu Jan 6 15:19:57 2022 -0500 remove errors/warnings from coda-oss commit a535245afdd72ba24ad89f270d3012e12fd30c14 Author: Dan Smith Date: Wed Jan 5 14:07:27 2022 -0500 latest from nitro commit aff92f496d1f402929707a3cb949c5fb7f4e14ba Author: Dan Smith Date: Wed Jan 5 14:04:39 2022 -0500 latest from coda-oss commit 41ba677e3418cb35ec636745ecb2a78fb7e1ac4e Merge: 21cc8ed1f e2e3defbb Author: Dan Smith Date: Wed Jan 5 14:03:26 2022 -0500 Merge branch 'master' into develop/update-externals commit 21cc8ed1f01d74ab9d814fae97aa4f70c1e9ce34 Author: Dan Smith Date: Mon Jan 3 16:43:08 2022 -0500 use strongly-type TRE fields commit 79eb6c8df45ee9f9d296c3d2152971458b6d8def Author: Dan Smith Date: Mon Jan 3 16:41:54 2022 -0500 str::strip from coda-oss commit faf20c7fbb3e3c1888215014b29a08c0b57f1caf Author: Dan Smith Date: Mon Jan 3 12:15:31 2022 -0500 explicitly =delete move commit ec79f1c0aac15ee0b36ed865b341f5d65e8ae0dd Author: Dan Smith Date: Mon Jan 3 11:12:43 2022 -0500 latest from coda-oss commit 22df5a95a3cbc3128780c63114a90181b4af33f8 Merge: db052a2d7 f1f19bdb6 Author: Dan Smith Date: Wed Dec 29 12:25:28 2021 -0500 Merge branch 'master' into develop/update-externals commit db052a2d7bc7db05a9ccadcc5e1554275334bd9c Author: Dan Smith Date: Wed Dec 29 09:17:08 2021 -0500 adjust for coda-oss changes commit 74ce242cf352a333684379cc9bd0278c0cf57571 Author: Dan Smith Date: Wed Dec 29 09:01:34 2021 -0500 latest from coda-oss 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 * From M. Stevens: "We found a bug in six that affects 24-bit products." * Squashed commit of the following: commit 25b34ab784e78f98fa6aa4b0e9b04a53caf36779 Author: Dan Smith Date: Tue Jan 18 12:33:44 2022 -0500 minimize changes from "master" commit 0b4deaa12fade653e20ccb4460fc424bef89d4c6 Author: Dan Smith Date: Tue Jan 18 10:23:38 2022 -0500 turn off some code-analysis diagnostics commit 8797cd0b51617057496d9f89ea2a7602cabb13be Author: Dan Smith Date: Tue Jan 18 10:23:22 2022 -0500 account for str:: changes in coda-oss commit 920d0b79f1b91a1196171deaa61a91626ad7c44d Author: Dan Smith Date: Tue Jan 18 09:54:08 2022 -0500 latest from coda-oss commit 8e308afcf7b35945bdb3cb6c27cc94e63aa18b3b Author: Dan Smith Date: Mon Jan 17 15:26:32 2022 -0500 construct a std::span directly, no make_span() utility (generates CA diagnostic) commit d81a4d1aaac1cdaec1d9dc6a3838343e201d2b81 Author: Dan Smith Date: Mon Jan 17 14:06:58 2022 -0500 latest from coda-oss commit 06716b781a3e6f0cf440b0f1bc5251bec415287e Author: Dan Smith Date: Mon Jan 17 13:24:46 2022 -0500 finish renaming of sys/Filesystem.* to sys/filesystem.* commit b3d0b4b8f4ad15c64e9f000143e64da3df1b241e Author: Dan Smith Date: Mon Jan 17 13:24:07 2022 -0500 rename sys/Filesystem commit c30ae278f01cc681c83a3a32afa3f3db174cfa06 Author: Dan Smith Date: Mon Jan 17 12:30:21 2022 -0500 no more gsl::make_span commit e61dca0022fc39fdb9f4b63353dc93476fdd98bb Author: Dan Smith Date: Mon Jan 17 11:19:07 2022 -0500 sys/Bit.h -> std/bit commit bb67d052044cd1274d21b9b870f85da4b2040cf1 Author: Dan Smith Date: Mon Jan 17 10:49:02 2022 -0500 sys::Filesystem -> coda_oss::filesystem commit ef212eaf09f87ffec27e8c043217ffbd33b29d1f Author: Dan Smith Date: Mon Jan 17 10:02:46 2022 -0500 tweaks to get coda-oss building w/o warnings commit 6f6bfaacc537067b7d36a363297e716e14e2e075 Author: Dan Smith Date: Mon Jan 17 09:57:35 2022 -0500 latest from "nitro" commit 90be0243a2d384bc6ee0d81967240ee1d802bdb4 Author: Dan Smith Date: Mon Jan 17 09:54:33 2022 -0500 update to account for coda-oss changes commit 28632726cc356524c5a3db5117ead37731342824 Author: Dan Smith Date: Mon Jan 17 09:40:48 2022 -0500 latest drop from coda-oss commit 92632ef45f7369c3b0ebfdab65f4cdfa3f79f9d1 Author: Dan Smith Date: Tue Jan 11 09:59:47 2022 -0500 Utf-8 -> Windows-1252 commit 9b719935e8189bc3fbe57e4af4d221c3c49548c5 Author: Dan Smith Date: Mon Jan 10 17:20:25 2022 -0500 UTF-8 to native string conversion commit 38dbe6d88e800f360cc9ae388558b09e5b65d95a Merge: 74df9ee57 a11980f60 Author: Dan Smith Date: Mon Jan 10 17:19:11 2022 -0500 Merge branch 'master' into develop/update-externals commit 74df9ee570e4d62fb6c435b4b5e0cef84b57b9d9 Author: Dan Smith Date: Mon Jan 10 13:48:13 2022 -0500 noexcept(false) commit b5181bc210c3c2b0abc918842f6bd83b2a2d3907 Author: Dan Smith Date: Mon Jan 10 12:01:40 2022 -0500 remove comments with a backslash at the end commit 08f8f9c27f46e793d3bc3d9e65b38facc8293521 Author: Dan Smith Date: Mon Jan 10 11:36:15 2022 -0500 certain NITRO unittests don't work in externals/nitro commit dfc3ded9d3c52df1d038833afbdda94cf93e44ee Author: Dan Smith Date: Mon Jan 10 10:55:01 2022 -0500 descriptor updates from "nitro" commit c989c7ec700533a7ce0c294c09a80d68ed0ad6a4 Author: Dan Smith Date: Mon Jan 10 10:41:48 2022 -0500 fix #ifdef commit 571ab4869aeb70f35dcfa046a36aed875c822739 Author: Dan Smith Date: Mon Jan 10 10:27:53 2022 -0500 latest from "nitro" commit 26ba1a99646ac6db8b38d09e183be4318597efdd Author: Dan Smith Date: Mon Jan 10 10:26:37 2022 -0500 latest from coda-oss commit 28ab3500dc4c0f46ad61fd6356fdc76db8b4380e Merge: 2cd678b7e 28afa6552 Author: Dan Smith Date: Mon Jan 10 10:25:33 2022 -0500 Merge branch 'master' into develop/update-externals commit 2cd678b7e2d9fdd46906a6637903fd1325481ffc Author: Dan Smith Date: Thu Jan 6 15:39:49 2022 -0500 more tweaks to remove compiler warnings commit 5d8907616e5bdbf011a9ded45a7cf20e525789d8 Author: Dan Smith Date: Thu Jan 6 15:19:57 2022 -0500 remove errors/warnings from coda-oss commit a535245afdd72ba24ad89f270d3012e12fd30c14 Author: Dan Smith Date: Wed Jan 5 14:07:27 2022 -0500 latest from nitro commit aff92f496d1f402929707a3cb949c5fb7f4e14ba Author: Dan Smith Date: Wed Jan 5 14:04:39 2022 -0500 latest from coda-oss commit 41ba677e3418cb35ec636745ecb2a78fb7e1ac4e Merge: 21cc8ed1f e2e3defbb Author: Dan Smith Date: Wed Jan 5 14:03:26 2022 -0500 Merge branch 'master' into develop/update-externals commit 21cc8ed1f01d74ab9d814fae97aa4f70c1e9ce34 Author: Dan Smith Date: Mon Jan 3 16:43:08 2022 -0500 use strongly-type TRE fields commit 79eb6c8df45ee9f9d296c3d2152971458b6d8def Author: Dan Smith Date: Mon Jan 3 16:41:54 2022 -0500 str::strip from coda-oss commit faf20c7fbb3e3c1888215014b29a08c0b57f1caf Author: Dan Smith Date: Mon Jan 3 12:15:31 2022 -0500 explicitly =delete move commit ec79f1c0aac15ee0b36ed865b341f5d65e8ae0dd Author: Dan Smith Date: Mon Jan 3 11:12:43 2022 -0500 latest from coda-oss commit 22df5a95a3cbc3128780c63114a90181b4af33f8 Merge: db052a2d7 f1f19bdb6 Author: Dan Smith Date: Wed Dec 29 12:25:28 2021 -0500 Merge branch 'master' into develop/update-externals commit db052a2d7bc7db05a9ccadcc5e1554275334bd9c Author: Dan Smith Date: Wed Dec 29 09:17:08 2021 -0500 adjust for coda-oss changes commit 74ce242cf352a333684379cc9bd0278c0cf57571 Author: Dan Smith Date: Wed Dec 29 09:01:34 2021 -0500 latest from coda-oss 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 * Populate the full buffer - not just the first ~32MiB. (#532) I'm merging this into feature/8AMPI_PHSI and from there to master. * expose to_AMP8I_PHS8I() through the bowels of the write infrastructure * control the "cutoff" value passed to to_AMP8I_PHS8I() via a six::Option * old G++ doesn't like a constexpr char[] * Squashed commit of the following: commit 833c031f411d0ae6de11b14c2d9affcc3efad5fb Author: Dan Smith Date: Thu Jan 20 12:58:04 2022 -0500 latest from coda-oss commit 2364ace449ee910356a98dde7f74a15c63aae761 Merge: 25b34ab78 8b6bcf777 Author: Dan Smith Date: Tue Jan 18 13:28:04 2022 -0500 Merge branch 'master' into develop/update-externals commit 25b34ab784e78f98fa6aa4b0e9b04a53caf36779 Author: Dan Smith Date: Tue Jan 18 12:33:44 2022 -0500 minimize changes from "master" commit 0b4deaa12fade653e20ccb4460fc424bef89d4c6 Author: Dan Smith Date: Tue Jan 18 10:23:38 2022 -0500 turn off some code-analysis diagnostics commit 8797cd0b51617057496d9f89ea2a7602cabb13be Author: Dan Smith Date: Tue Jan 18 10:23:22 2022 -0500 account for str:: changes in coda-oss commit 920d0b79f1b91a1196171deaa61a91626ad7c44d Author: Dan Smith Date: Tue Jan 18 09:54:08 2022 -0500 latest from coda-oss commit 8e308afcf7b35945bdb3cb6c27cc94e63aa18b3b Author: Dan Smith Date: Mon Jan 17 15:26:32 2022 -0500 construct a std::span directly, no make_span() utility (generates CA diagnostic) commit d81a4d1aaac1cdaec1d9dc6a3838343e201d2b81 Author: Dan Smith Date: Mon Jan 17 14:06:58 2022 -0500 latest from coda-oss commit 06716b781a3e6f0cf440b0f1bc5251bec415287e Author: Dan Smith Date: Mon Jan 17 13:24:46 2022 -0500 finish renaming of sys/Filesystem.* to sys/filesystem.* commit b3d0b4b8f4ad15c64e9f000143e64da3df1b241e Author: Dan Smith Date: Mon Jan 17 13:24:07 2022 -0500 rename sys/Filesystem commit c30ae278f01cc681c83a3a32afa3f3db174cfa06 Author: Dan Smith Date: Mon Jan 17 12:30:21 2022 -0500 no more gsl::make_span commit e61dca0022fc39fdb9f4b63353dc93476fdd98bb Author: Dan Smith Date: Mon Jan 17 11:19:07 2022 -0500 sys/Bit.h -> std/bit commit bb67d052044cd1274d21b9b870f85da4b2040cf1 Author: Dan Smith Date: Mon Jan 17 10:49:02 2022 -0500 sys::Filesystem -> coda_oss::filesystem commit ef212eaf09f87ffec27e8c043217ffbd33b29d1f Author: Dan Smith Date: Mon Jan 17 10:02:46 2022 -0500 tweaks to get coda-oss building w/o warnings commit 6f6bfaacc537067b7d36a363297e716e14e2e075 Author: Dan Smith Date: Mon Jan 17 09:57:35 2022 -0500 latest from "nitro" commit 90be0243a2d384bc6ee0d81967240ee1d802bdb4 Author: Dan Smith Date: Mon Jan 17 09:54:33 2022 -0500 update to account for coda-oss changes commit 28632726cc356524c5a3db5117ead37731342824 Author: Dan Smith Date: Mon Jan 17 09:40:48 2022 -0500 latest drop from coda-oss commit 92632ef45f7369c3b0ebfdab65f4cdfa3f79f9d1 Author: Dan Smith Date: Tue Jan 11 09:59:47 2022 -0500 Utf-8 -> Windows-1252 commit 9b719935e8189bc3fbe57e4af4d221c3c49548c5 Author: Dan Smith Date: Mon Jan 10 17:20:25 2022 -0500 UTF-8 to native string conversion commit 38dbe6d88e800f360cc9ae388558b09e5b65d95a Merge: 74df9ee57 a11980f60 Author: Dan Smith Date: Mon Jan 10 17:19:11 2022 -0500 Merge branch 'master' into develop/update-externals commit 74df9ee570e4d62fb6c435b4b5e0cef84b57b9d9 Author: Dan Smith Date: Mon Jan 10 13:48:13 2022 -0500 noexcept(false) commit b5181bc210c3c2b0abc918842f6bd83b2a2d3907 Author: Dan Smith Date: Mon Jan 10 12:01:40 2022 -0500 remove comments with a backslash at the end commit 08f8f9c27f46e793d3bc3d9e65b38facc8293521 Author: Dan Smith Date: Mon Jan 10 11:36:15 2022 -0500 certain NITRO unittests don't work in externals/nitro commit dfc3ded9d3c52df1d038833afbdda94cf93e44ee Author: Dan Smith Date: Mon Jan 10 10:55:01 2022 -0500 descriptor updates from "nitro" commit c989c7ec700533a7ce0c294c09a80d68ed0ad6a4 Author: Dan Smith Date: Mon Jan 10 10:41:48 2022 -0500 fix #ifdef commit 571ab4869aeb70f35dcfa046a36aed875c822739 Author: Dan Smith Date: Mon Jan 10 10:27:53 2022 -0500 latest from "nitro" commit 26ba1a99646ac6db8b38d09e183be4318597efdd Author: Dan Smith Date: Mon Jan 10 10:26:37 2022 -0500 latest from coda-oss commit 28ab3500dc4c0f46ad61fd6356fdc76db8b4380e Merge: 2cd678b7e 28afa6552 Author: Dan Smith Date: Mon Jan 10 10:25:33 2022 -0500 Merge branch 'master' into develop/update-externals commit 2cd678b7e2d9fdd46906a6637903fd1325481ffc Author: Dan Smith Date: Thu Jan 6 15:39:49 2022 -0500 more tweaks to remove compiler warnings commit 5d8907616e5bdbf011a9ded45a7cf20e525789d8 Author: Dan Smith Date: Thu Jan 6 15:19:57 2022 -0500 remove errors/warnings from coda-oss commit a535245afdd72ba24ad89f270d3012e12fd30c14 Author: Dan Smith Date: Wed Jan 5 14:07:27 2022 -0500 latest from nitro commit aff92f496d1f402929707a3cb949c5fb7f4e14ba Author: Dan Smith Date: Wed Jan 5 14:04:39 2022 -0500 latest from coda-oss commit 41ba677e3418cb35ec636745ecb2a78fb7e1ac4e Merge: 21cc8ed1f e2e3defbb Author: Dan Smith Date: Wed Jan 5 14:03:26 2022 -0500 Merge branch 'master' into develop/update-externals commit 21cc8ed1f01d74ab9d814fae97aa4f70c1e9ce34 Author: Dan Smith Date: Mon Jan 3 16:43:08 2022 -0500 use strongly-type TRE fields commit 79eb6c8df45ee9f9d296c3d2152971458b6d8def Author: Dan Smith Date: Mon Jan 3 16:41:54 2022 -0500 str::strip from coda-oss commit faf20c7fbb3e3c1888215014b29a08c0b57f1caf Author: Dan Smith Date: Mon Jan 3 12:15:31 2022 -0500 explicitly =delete move commit ec79f1c0aac15ee0b36ed865b341f5d65e8ae0dd Author: Dan Smith Date: Mon Jan 3 11:12:43 2022 -0500 latest from coda-oss commit 22df5a95a3cbc3128780c63114a90181b4af33f8 Merge: db052a2d7 f1f19bdb6 Author: Dan Smith Date: Wed Dec 29 12:25:28 2021 -0500 Merge branch 'master' into develop/update-externals commit db052a2d7bc7db05a9ccadcc5e1554275334bd9c Author: Dan Smith Date: Wed Dec 29 09:17:08 2021 -0500 adjust for coda-oss changes commit 74ce242cf352a333684379cc9bd0278c0cf57571 Author: Dan Smith Date: Wed Dec 29 09:01:34 2021 -0500 latest from coda-oss 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 * add "noexcept" where possible * by deriving from std::priority_queue, we can avoid rebuilding the heap twice * more "noexcept" to give the compiler more opportunities for optimization * build with GCC 4.9.4 * Squashed commit of the following: commit e4ed163e282a55e68c5bef91ee9a6478e7f4492f Author: Dan Smith Date: Tue Feb 1 11:50:54 2022 -0500 test more AMP8I_PHS8I conversion commit aae247180bd846901f50fb4009a345e01c5d1b52 Author: Dan Smith Date: Tue Feb 1 11:07:28 2022 -0500 correct values for non-debug build commit b4c292692f12d9e07ec10a28743bad3de7d503d6 Author: Dan Smith Date: Tue Feb 1 10:53:13 2022 -0500 check some AMP8I_PHS8I results commit 58442ea8a5249f6689e848ed0e8095d602d3c4e2 Author: Dan Smith Date: Tue Feb 1 09:41:27 2022 -0500 no need for a std::unique_ptr<> to std::vector commit 4fc61416ba01103281ec984a477bc8d7c01c9904 Author: Dan Smith Date: Tue Feb 1 08:49:42 2022 -0500 a copy in std::make_unique<> doesn't seem to work with older compilers commit b0dff2ec21379c18a81c8cc62019fc1e7639fec2 Author: Dan Smith Date: Tue Feb 1 08:36:37 2022 -0500 ComplexToAMP8IPHS8I_KDTree should have been deleted commit 1697d9c8959b2290c974ccdf59eccd2b62c80002 Author: Dan Smith Date: Mon Jan 31 17:29:04 2022 -0500 no need to copy cached std::vector commit 08f6114c456678952badfe3606a89c4acf96a961 Author: Dan Smith Date: Mon Jan 31 17:18:22 2022 -0500 a std::array<> is ALWAYS copied commit acddc2b842f44c23e565c638b0c0a747ce427b17 Author: Dan Smith Date: Mon Jan 31 16:51:39 2022 -0500 swap between nearest-neighbor implementations at compile-time commit 647a606ff92177ac203f8f776807965775bcfba0 Author: Dan Smith Date: Mon Jan 31 16:13:53 2022 -0500 "hide" KDNode in details too commit 51b3edf66850cbd7dd2ccd00d215b18a9a8fd433 Author: Dan Smith Date: Mon Jan 31 15:58:02 2022 -0500 put KDTree in "details" so no one else is tempted to use it commit c59a111fa928f58b9e55ea544a01c5bebcd3fd8a Author: Dan Smith Date: Mon Jan 31 15:54:53 2022 -0500 prepare to make KDTree API look like ComplexToAMPIIPHS9I commit 32eadd4bc9677213e6dd92881c13fe51440e4548 Author: Dan Smith Date: Mon Jan 31 15:47:38 2022 -0500 use a factory function to create ComplexToAMP8IPHS8I commit ef418623ba7e9d2ad4bea3b29dfcb6a178fc0761 Author: Dan Smith Date: Mon Jan 31 15:31:07 2022 -0500 fewer changes on merge commit 078be3468abd9840091af508b4eeca80ba2a3e1b Author: Dan Smith Date: Mon Jan 31 15:17:10 2022 -0500 put ComplexToAMP8IPHS8I in a "details" namespace so no one else is tempted to use it commit 35cd365c79d8147ab16d8a79f2bcbbbb71f072f5 Author: Dan Smith Date: Mon Jan 31 14:48:39 2022 -0500 Wrap the cxfloat->8AMP_PHSI conversion because we've got two different ways of doing it commit 71387289dfa13cee1ebfd109dd581be7d2ac0084 Author: Dan Smith Date: Mon Jan 31 14:22:45 2022 -0500 wrap KDTree cxfloat->AMP_PHS commit 2d4dc0903aa359b35412ed779d612d766c6295a7 Author: Dan Smith Date: Mon Jan 31 14:05:39 2022 -0500 cache the magnitudes w/o an AmplitudeTable commit ebc4a8a76981a852aa8f2189e29787e5d461483f Author: Dan Smith Date: Mon Jan 31 13:35:55 2022 -0500 references instead of pointers commit 45034487a01b4a5eeeadaee90759c2bf34809b89 Author: Dan Smith Date: Mon Jan 31 13:19:26 2022 -0500 building in VS2022 (again) commit 7b5377dbf9ee0aaacbf426b16f556c5069588b2b Author: Dan Smith Date: Mon Jan 31 13:04:38 2022 -0500 Revert "build in VS2022, remove compiler warnings" This reverts commit e4b6eb9c80c7e105c705ca2d6b816cb1894c34f1. commit 3ec4b4a8b315d4bd8dbc8b5e07c38bcf678341d4 Author: Dan Smith Date: Mon Jan 31 12:58:20 2022 -0500 Revert "references instead of pointers" This reverts commit 1324635655a8ed20cfdacec57e8fe54fce8b2a2a. commit 1324635655a8ed20cfdacec57e8fe54fce8b2a2a Author: Dan Smith Date: Mon Jan 31 11:38:57 2022 -0500 references instead of pointers commit e4b6eb9c80c7e105c705ca2d6b816cb1894c34f1 Author: Dan Smith Date: Mon Jan 31 11:32:10 2022 -0500 build in VS2022, remove compiler warnings commit df7fc435daec6ed9fe4d026f01d1f8fa6682e6bf Author: Andrew Hardin Date: Mon Jan 31 07:06:59 2022 -0700 Improve performance of std::complex -> 8-bit amplitude and phase. (#537) This change introduces a new acceleration structure that can efficiently map from std::complex -> 8-bit amplitude and phase. This is accomplished by exploiting the systematic distribution of the 8-bit amplitude and phase values in the original std::complex space. * use KDTree in this branch * add nearest_neighbor test * fix unit tests * slam in "main" * remove transform_async() from coda-oss; std::async() is a bit half-baked * Squashed 'externals/coda-oss/' changes from e87c32b4d..0b7d581fa 0b7d581fa remove transform_async() (#663) f6489b6be Merge branch 'main' into feature/xml.lite_tweaks 836c426a2 use function-pointers so that isConsoleOutput is only checked once 56e3c45b1 move depthPrint() functionality into non-member function in preparation for future changes ddcd26d97 Merge branch 'main' into feature/xml.lite_tweaks 69cc0e506 use the more rigorous create_and_check_datatype() 9efb87558 Merge branch 'main' into feature/hdf5 4d2f2f417 more HighFive unittests (#662) 14191a844 HighFive::create_datatype() goes from C++ to HighFive 98583473f utility routines to read string attributes 1fa75ce81 use the C API to read a string attribute 71e7b69f5 still can't figure out how to read a string attribute :-( e96f37a69 test reading the file attributes a25244519 getAttribute() unittest 8f12a3000 getDataType() unittest 857ff0af3 HighFive utility routines (#661) 1d687db57 writeDataSet() utility overload 106aa6894 sigh ... H5Easy::dump() fill fails on Windows/WAF :-( 2641b60b2 Merge branch 'main' into feature/hdf5 35c19e7e8 change actions to @v3 (#660) 212bbd3a3 works on local machine, but not build server ... ? 7125118b0 dump of 1D vector doesn't work :-( c704db435 sigh ... WAF build still failing :-( 01aae4616 does dump() of a 1D vector work? 76a53c813 comment-out H5 writing :-( 0f0e19aff test_highfive_dump() cb8f73795 trying to get highfive_dump() unittest working w/Windows-WAF 6584a264a does test_highfive_create() work? cde6147ce tweak HighFive wrappers (#659) 316566854 Revert "trying HighFive "write" unittests again" a9ec24ca4 trying HighFive "write" unittests again 585ad49a5 tweak names of utility routines 4c91a4d97 make it easier to read a std::vector and std::vecotr 0217ffa26 readDataSet() now works for 1D data 95e8973f2 trying to get hdf5::lite::load() working 4d294611d "const" correctness 5e6305c3f fix load_complex() 4a134dc5f start work on utility routines to read complex data from HDF5 9d76a7f41 Merge branch 'main' into feature/hdf5 8f9667a24 whitepsace ebd3fc99e Merge branch 'main' into feature/hdf5 40091b069 comment-out writing tests for now ... need to figure our WAF bulid failure 935aa3459 be sure the dataset has real data 114b9bf33 update release notes bd9c0b26c tweak HighFive utility routines acda1ef57 turn off diagnostics around expected failures 22a748840 readDataSet() utility routine for HighFive bd88a8c25 HighFive writeDataSet() utility to work with our SpanRC 6142f5b33 use HighFive routines to write a HDF5 file 5bbf1abaf Use HiveFive routines to get info about the file 84fbc8378 duplicate unittests with H5Easy f1f054c03 Merge branch 'main' into feature/hdf5 9b63ca470 fix directory names f6f826689 fix directory names 7aeb82c33 Merge branch 'main' into feature/hdf5 d028baaeb hook up HighFive header-only library (#653) 3083b0a31 Revert "HighFive 2.6.2" 246985a7f Revert ""build" HighFive HDF5 library" a8b75a586 Revert "turn off HighFive Boost support" ec68d5f83 Revert "Add HighFive unittests" f1f85b9e7 Revert "get test_high_five_base more-or-less compiling" 5ea634ee1 Revert "more work on getting HighFive unittests to build" ecc45433c more work on getting HighFive unittests to build bb194788a get test_high_five_base more-or-less compiling d42bde000 Add HighFive unittests ddc86bb32 turn off HighFive Boost support b255122d4 "build" HighFive HDF5 library 396cc3ef2 HighFive 2.6.2 5e5f9d9c0 Merge branch 'main' into feature/hdf5 ee938b4a5 changes from SIX bb764df90 Merge branch 'main' into feature/xml.lite_tweaks de2a24380 make derived classes 'final' if possible 14e19bcd2 Change xml lite function to virtual (#645) 8f42ac8e9 Merge branch 'main' into feature/xml.lite_tweaks 18ad90645 hdf5Write unittest 3462e1179 createFile() and writeFile() overloads ecee81d53 fix typos 197eecfa6 sketch-out hdf5::lite::writeFile() bd2311795 use SpanRC for writeFile(), not yet implemented ea9af7510 simple SpanRC to hold a 2D-size and pointer 027c19ee8 createFile() unittest 1f9d07ecb hook up createFile() 8c7e4473f start hooking up HDF5 writing 146e0bea3 Merge branch 'main' into feature/hdf5 88ca9fcb7 Merge branch 'main' into feature/hdf5 42b604b46 Squashed commit of the following: 10ee602c2 Merge branch 'main' into feature/hdf5 67aa42b69 restore changes from "main" 8bbfcbfbf unittests can be simplified to match fewer "view" classes 126bb802e Merge branch 'main' into feature/hdf5 3f8ba7a42 again, don't need a class just to convert from std::vector<> to std::span<> 24c2b489c Squashed commit of the following: 2703c119d Squashed commit of the following: 9d5228a2b don't need an entire class just to convert a std::vector<> into std::span<> 51bc931dc Merge branch 'main' into feature/hdf5 a84f25816 Squashed commit of the following: c4d2ed696 add missing #include guards, fix type in existing #include guard d541525a0 use a single ComplexViewConstIterator for all views 86e6a459f CODA_OSS_disable_warning causes GCC errors :-( 5d4b9c2cb only need an custom iterator for ComplexSpansView d9f0fb128 hook up iterators b9329e4db initial pass at a ComplexViewConstIterator 635238873 remove compiler warning about unused "constexpr" variables b39f6096f use the casing from H5 to make copy/pasting code slightly easier 0887b13eb Merge branch 'main' into feature/hdf5 bd07df1ca Consistent casing for Dataset, Datatype, Dataspace 7acd30ee2 tweak hdf5.lite dependencies 38ab914df Jupyter notebook for creating H5 files 95a040e0b _small.h5 is now (correctly) FLOAT32 107e7c487 make a simple values() member function to avoid template magic e1feca919 use TEST_SPECIFIC_EXCEPTION macro instead of try/catch 738333688 readDatasetT() now throws for the wrong buffer type 6b2cc2529 Merge branch 'feature/hdf5' of github.com:mdaus/coda-oss into feature/hdf5 310f8fd3d can't get template magic right for copy_axis() 86b306d59 stepping through copy ctors in the debugger is annoying f243e92d6 trying to make wrong type of buffer fail 2b10d9652 read in new sample file a28e59d8c help the compiler with type deduction 49bf5e9bc nested_complex_float_data_small.h5 e029325fc utility routines to "deconstruct" and array of std::complex dede3bd39 Merge branch 'main' into feature/hdf5 904b1ef5e tweak class names, make_() and copy() utility routines 8237b9efb make it harder to pass the wrong types to ComplexViews 4d9aeda2c ComplexArrayView and ComplexParallelView utility classes f5e367dfa test std::span> a4a2844f2 read in the nested "i" and "r" data 115615265 sample file has subgroups 8e1b7869a Merge branch 'feature/hdf5' of github.com:mdaus/coda-oss into feature/hdf5 9f4232a1d update sample H5 file 8c55db73a walk through HDF5 sub-groups 7775ed9c4 Update 123_barfoo_catdog_cx.h5 677975d7c Matlab code to create sample H5 file a0e7dfe07 Update test_hdf5info.cpp 0b67e1602 pass __FILE__ and __LINE__ from calling site for a more accurate exception message 86a677321 skeleton for more sample data 85f79b099 Merge branch 'main' into feature/hdf5 18088e942 Merge branch 'main' into feature/hdf5 3a1d17692 Merge branch 'main' into feature/hdf5 1755c69d7 Merge branch 'main' into feature/hdf5 9ad015432 No more "11" suffix on exception names c20d96251 Squashed commit of the following: c88cee999 other values to be filled-in bca4a4ecd incorporation NamedObject from HDF5 docs 61fa68f72 groupInfo() 460e7d766 datasetInfo() 14eb9b764 start filling in DatasetInfo afe5f1c3a start to fill in DatasetInfo 77a968c72 start filling in GroupInfo d81bcdfd9 openGroup() to open groups (loc) a0cd29469 comment-out "dataset" unittest for now 86e006024 begin filling in FileInfo 366dda6ab a return_type_of utility is needed to deduce the return type e21928263 explicitly pass return type to template 4937ccd11 template to reduce boilerplate when calling try_catch_H5Exceptions b3b5ebde7 use new exception utility routines ea1c03ef0 put exception handling/conversion in a utility routine 819a99d39 utility routine for exception handling 6f34eea97 put utilities in a separate file for easier reuse fcbde4f24 break utility routines into smaller pieces for easier reuse 52358ea8a WIN32 no longer automatically defined? 5a4286472 Revert "build HDF5 with C89" 680e599e9 build HDF5 with C89 a87a07121 Merge branch 'main' into feature/hdf5 8447c1a90 Revert "sym-links instead of copying files" db3b5e12b Merge branch 'main' into feature/xml.lite_tweaks fb60b5696 Merge branch 'main' into feature/hdf5 5110a5cc8 Comments about _u and _q 1a937d32c Merge branch 'main' into feature/xml.lite_tweaks fa06f04d7 get ready for hdf5.lite enhancdements b040c7c43 sym-links instead of copying files aa431bb47 use _u for xml::lite::Uri 3d0c6d58c fix case-sensitive #include filename 93dcd0e52 operator() for getElementByName() 75a93af85 more operator[] overloads to make attribute management easier 4ab8216f8 user-defined string literals to remove some noise around xml::lite::QName f82f0b0fc Merge branch 'main' into feature/xml.lite_tweaks ae30e3644 Merge branch 'feature/xml.lite_tweaks' of github.com:mdaus/coda-oss into feature/xml.lite_tweaks ffdd9beb0 simplify attribute creation 9bf5414f5 simplify attribute creation 82d7a4e95 SWIG gets confused about namespaces 7a61d0741 fix bug on Element ctor uncovered by unittest fdd7e58c1 QName is also in the xerces namespace which confuses SWIG bindings a325b7053 operator+=() overload for addChild daf30e6c0 Merge branch 'feature/xml.lite_tweaks' of github.com:mdaus/coda-oss into feature/xml.lite_tweaks b887d2b47 provide overloads for Element& rather than creating new "reference" types 1fa6bba38 rename test_xmleasy.cpp 7c8c9e0f1 += overload 850da6f63 overload for std::string 4547fc5a7 use UIT-8 strings for characterData 4723462a3 convenient addChild() overloads e48720753 copy over ElementReference from xml.easy a4ca30a0d Merge branch 'main' into feature/xml.lite_tweaks 6ae9f0b71 Revert "check-in of new xml.easy (to move code between computers)" f7466a6d7 Revert "simple routines for single element" a5490230d Revert "make some operators simplier ways of calling functions" c9a25630a Revert "get document creation working" 8af8710b0 Revert "free functions instead of member functions" 16c3847cb Revert "ElementReference distinct from Element" 7d68e156f Revert "ElementMutableReference" 00eb2a282 Merge branch 'main' into feature/xml.lite_tweaks a42969c1f ElementMutableReference a20ae9355 ElementReference distinct from Element 14eeeea0b free functions instead of member functions 4aae014b3 get document creation working 883569269 make some operators simplier ways of calling functions 053bd1212 simple routines for single element 8bf701a2e check-in of new xml.easy (to move code between computers) 41f959051 unittests for creating XML documents from scratch 9752d50ae Merge branch 'main' into feature/xml.lite_tweaks 1531d5709 by default, don't validate strings passed to Uri() 46d13d4bf Merge branch 'master' into feature/xml.lite_tweaks 39b547d32 remove more vestiges of Expat and LibXML ec8274d52 remove LibXML and Expat as they're no longer used/supported. 20eeefeef Merge branch 'master' into feature/xml.lite_tweaks 95074b9b1 update for newer Intel compiler 7024f71e1 Merge branch 'master' into feature/xml.lite_tweaks 57b1cbc83 Merge branch 'master' into feature/xml.lite_tweaks 4b67561c3 remove validate() overload that nobody is using fa15f1e5d Squashed commit of the following: 1484a9090 test the new validate() API 470da70fb hookup StringStreamT routines 2cddf2504 begin hooking up validate() overloads 1b5d910f3 overload validate() for UTF-8 and Windows-1252 03309b8c9 Squashed commit of the following: b72c6c5bf older compiler doesn't like our make_unique af8f00307 validate UTF-8 XML on Linux 211188613 unit-test for LEGACY XML validation 3c1169d2b Squashed commit of the following: 3afff19ca std::filesystem::path for FileInputStreamOS 908d452f8 WIP: validate all of our sample XML files 00f9bb16b validate against a XML schema 243d8c356 Merge branch 'master' into feature/xml.lite_tweaks 2815d707d fix to work with SWIG bindings. :-( 460862132 trying (again) to remove vestiages of old code e3c83a858 Revert "new code should use UTF-8" 811207c92 new code should use UTF-8 0ffd835f9 Squashed commit of the following: 1e7e03ded Merge branch 'master' into feature/xml.lite_tweaks c1d806aff Merge branch 'master' into feature/xml.lite_tweaks 850d3c811 str::strip() that can be easier to use than str::trim() 580ba9c8c explicitly =delete move 2b39831a8 Squashed commit of the following: 39eebdc23 Merge branch 'master' into feature/xml.lite_tweaks 9adf86cba force calling new UTF-8 write() routines ea61b6204 Merge branch 'master' into feature/xml.lite_tweaks 8a34583fa overload to take schemaPaths as filesystem::path 8671b442f parse XML embedded in a binary file ec4a902f1 updates from xerces.lite 80dc4d963 updates from xerces.lite 549766d6c Attributes::contains() no longer catches an exception 8a645ceac need "sys/" when building in other environments 36af08269 super-simple URI validation 78ef28a3e SWIG bindings are a PITA! :-( e9cba8491 SWIG needs help with Uri 8a8d8dc07 another routines used by pre-build SWIG bindings 818e1ec5d pre-build SWIG bindings use getElementByTagName() member function 067cac5d8 old compiler gets confused on unadorned QName ba92c0ae7 more use of Uri and QName 446c7d17a use QName in new code d6f8b0c83 more direct use of QName 90fff1c73 use xml::lite::QName instead of tuple 646cbb5ed more direct use of QName and Uri ba589ea3b make QName more robust bab0ee8b5 createElement() -> addNewElement() e3a145747 grab changes from six-library 32285e95c Merge branch 'master' into feature/xml.lite_tweaks 9f79f0bf6 Merge branch 'master' into feature/xml.lite_tweaks a12bbc32c make it easier to create new Elements with a value fc9967f98 make it easy for callers to addChild() keep a reference to the Element 4627766b7 be sure test_xmlparser works in "externals" of other projects bf2276396 "private" is part of the name-mangling fad92bcc8 making sure copy-ctor is implemented f90fdcead consolidate common XML test code 9fc53f2d5 use str:: utility for casting 6da6f794b still trying to find the right macro for SWIG 0c1b86c56 still trying to fix SWIG fdc6fc9bd trying to fix SWIG build error 7835e8c27 SWIG needs copy-ctor 585695942 disable copy/assignment for Element, it's probably almost always wrong 391fed613 fix double-delete caused by copying 61790fe69 retry parsing XML with Windows-1252 if first parse() fails 63cffac59 change string_encoding to match coda-oss style of PascalCase 010479bbe read an XML file we know is wrongly encoded as Windows-1252 9a0505062 more references instead of pointers 2d44b6951 Reading Windows-1252 w/o "encoding" fails 63dc7b076 read Windows-1252 too c9434c9cb test as UIT-8 too f310ccf0c get reading from UTF-8 XML working on Windows 1fa39c2be get testReadUtf8XmlFile working on Linux 1a83cd815 sys::Path is too much trouble right now ed60aa22c unit-test to read XML from a file a9336db7c Squashed commit of the following: 0825beb0d Merge branch 'master' into feature/xml.lite_tweaks c618489be Merge branch 'master' into feature/xml.lite_tweaks e8e4b8fe1 determine string_encoding based on platform 1f43bcfc2 create a new Element by using the platform to determine "characterData" encoding 961bef66b Merge branch 'master' into feature/xml.lite_tweaks e9798a5cb fix static_assert() 6f7772874 Merge branch 'master' into feature/xml.lite_tweaks b98d4f5a9 Merge branch 'master' into feature/xml.lite_tweaks 1b5abba2a The (old) version of SWIG we're using doesn't like certain C++11 features. 53bdeabaf Merge branch 'master' into feature/xml.lite_tweaks 60cf8ae80 "" doesn't work with decltype() in older C++ 97e72477a reduce getValue() overloads by making "key" a template argument 5e6373e55 reduce code duplication f9e7cfeee provide castValue instead of getValue(T&) cbd0bd8f2 castValue throws instead of returning a bool like getValue(T&) 87c7514fc Merge branch 'master' into feature/xml.lite_tweaks 10cc61223 make getElement*() consistent for zero or >1 results f5b137e3c Merge branch 'master' into feature/xml.lite_tweaks 1765efc62 allow clients to specify toType() and toString() for getValue() and setValue() df8b746e1 allow clients to specify their own toType/toString routines 66702726a Merge branch 'master' into feature/xml.lite_tweaks 6956311f1 Merge branch 'master' into feature/xml.lite_tweaks d505f3593 Merge branch 'master' into feature/xml.lite_tweaks fbd106115 catch a BadCastException and return false from getValue() 3a78377b5 use a template to reduce duplicated code 0ad4b8606 Merge branch 'master' into feature/xml.lite_tweaks a848aa3a2 get & set the characer data as a type f3ee1ee12 utility routines to set an attribute value 595227683 templates to get an attribute value convert to a specific type 06639227b miised a change in last commit 1aa458ef8 add getValue() overloads that return true/false rather than throwing faa6d3075 added getElementByTagName() overloads as that's a very common use-case git-subtree-dir: externals/coda-oss git-subtree-split: 0b7d581fa62a58ca730fbbf58d24c8ef8b32f764 * Squashed 'externals/nitro/' changes from c8ecbe9ae..90c6263e2 90c6263e2 latest from coda-oss (#544) 90d513ac5 latest from coda-oss (#543) git-subtree-dir: externals/nitro git-subtree-split: 90c6263e218e20f9d974520d955638ec35ac1085 * copy_externals * use our own `struct` rather than std::pair<> * from_AMP8I_PHS8I() is a goofy name * overloads to avoid an `if`-check inside of a loop * overload so it's no longer necessary to pass `nullptr` * No need to make "nodes" just to iterate through the data again * avoid checking pAmplitudeTable inside a loop * force include pch.h * utility to generate all 256 `uint8_t` values * overloads for NULL (none) and non-NULL (reference) amplitude table * merge develop/byteswap * remove cutoff, it's not needed in C++17 * AmplitudeTable should be clone()'d, not copyied * AmplitudeTable should be clone()'d, not copyied * Put LUT and AmplitudeTable in their own .H file; Types.h is big * use Amp8iPhs8iLookup_t type * simplify code to create lookup table * cache the lookup table on AmplitudeTable * removed dead code * use toComplex() and fromComplex() as AMP8I_PHS8I is a mouth-full * Move AMP8I/PHS8I structures to SIDD for better code structure * simplify creating a ComplexToAMP8IPHS8I instance * reduce checking for a NULL AmplitudeTable* * fix build error due to header file rearrangment * simplify special routine for unit-testing * don't need "static" utility routines anymore * no reason not to allow move for ComplexToAMP8IPHS8I --------- Co-authored-by: Andrew Hardin --- UnitTest/sicd_Test.h | 2 +- .../six.sicd/include/six/sicd/ComplexData.h | 2 +- .../include/six/sicd/ComplexToAMP8IPHS8I.h | 80 ----- .../c++/six.sicd/include/six/sicd/ImageData.h | 23 +- .../c++/six.sicd/include/six/sicd/Utilities.h | 23 +- six/modules/c++/six.sicd/six.sicd.vcxproj | 1 - .../c++/six.sicd/six.sicd.vcxproj.filters | 3 - .../c++/six.sicd/source/ComplexData.cpp | 7 +- .../six.sicd/source/ComplexToAMP8IPHS8I.cpp | 96 ++++-- six/modules/c++/six.sicd/source/ImageData.cpp | 247 +++++--------- six/modules/c++/six.sicd/source/Utilities.cpp | 90 +++-- .../six.sicd/unittests/test_AMP8I_PHS8I.cpp | 100 +++--- six/modules/c++/six/include/six/Adapters.h | 12 +- .../c++/six/include/six/AmplitudeTable.h | 323 ++++++++++++++++++ six/modules/c++/six/include/six/Data.h | 16 +- six/modules/c++/six/include/six/Types.h | 175 +--------- .../c++/six/include/six/WriteControl.h | 8 - six/modules/c++/six/six.vcxproj | 1 + six/modules/c++/six/six.vcxproj.filters | 3 + six/modules/c++/six/source/Adapters.cpp | 23 +- .../c++/six/source/NITFWriteControl.cpp | 29 +- six/modules/c++/six/source/WriteControl.cpp | 2 +- 22 files changed, 653 insertions(+), 613 deletions(-) delete mode 100644 six/modules/c++/six.sicd/include/six/sicd/ComplexToAMP8IPHS8I.h create mode 100644 six/modules/c++/six/include/six/AmplitudeTable.h diff --git a/UnitTest/sicd_Test.h b/UnitTest/sicd_Test.h index 27417d826d..9b1f0467fb 100644 --- a/UnitTest/sicd_Test.h +++ b/UnitTest/sicd_Test.h @@ -28,8 +28,8 @@ #include #include #include +#include #include -#include #include #include diff --git a/six/modules/c++/six.sicd/include/six/sicd/ComplexData.h b/six/modules/c++/six.sicd/include/six/sicd/ComplexData.h index 7b3f1f7917..b55a7d150b 100644 --- a/six/modules/c++/six.sicd/include/six/sicd/ComplexData.h +++ b/six/modules/c++/six.sicd/include/six/sicd/ComplexData.h @@ -162,7 +162,7 @@ struct ComplexData: public Data { imageData->pixelType = pixelType; } - bool convertPixels_(std::span, std::span, ptrdiff_t cutoff) const override; + bool convertPixels_(std::span, std::span) const override; /*! * Maps to: /SICD/ImageData/NumRows, diff --git a/six/modules/c++/six.sicd/include/six/sicd/ComplexToAMP8IPHS8I.h b/six/modules/c++/six.sicd/include/six/sicd/ComplexToAMP8IPHS8I.h deleted file mode 100644 index d3545448a5..0000000000 --- a/six/modules/c++/six.sicd/include/six/sicd/ComplexToAMP8IPHS8I.h +++ /dev/null @@ -1,80 +0,0 @@ -/* ========================================================================= -* This file is part of six.sicd-c++ -* ========================================================================= -* -* (C) Copyright 2021, Maxar Technologies, Inc. -* -* six.sicd-c++ is free software; you can redistribute it and/or modify -* it under the terms of the GNU Lesser General Public License as published by -* the Free Software Foundation; either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this program; If not, -* see . -* -*/ -#ifndef SIX_six_sicd_ComplexToAMP8IPHS8I_h_INCLUDED_ -#define SIX_six_sicd_ComplexToAMP8IPHS8I_h_INCLUDED_ -#pragma once - -#include - -#include -#include -#include -#include - -#include - -namespace six -{ -namespace sicd -{ -namespace details -{ -/*! - * \brief A utility that's used to convert complex values into 8-bit amplitude and phase values. - */ -class ComplexToAMP8IPHS8I final -{ - /*! - * Create a lookup structure that converts from complex to amplitude and phase. - * @param pAmplitudeTable optional amplitude table. - */ - explicit ComplexToAMP8IPHS8I(const six::AmplitudeTable* pAmplitudeTable = nullptr); -public: - static const ComplexToAMP8IPHS8I* make(const six::AmplitudeTable* pAmplitudeTable, std::unique_ptr&); - - ~ComplexToAMP8IPHS8I() = default; - ComplexToAMP8IPHS8I(const ComplexToAMP8IPHS8I&) = delete; - ComplexToAMP8IPHS8I& operator=(const ComplexToAMP8IPHS8I&) = delete; - ComplexToAMP8IPHS8I(ComplexToAMP8IPHS8I&&) = delete; - ComplexToAMP8IPHS8I& operator=(ComplexToAMP8IPHS8I&&) = delete; - - /*! - * Get the nearest amplitude and phase value given a complex value - * @param v complex value to query with - * @return nearest amplitude and phase value - */ - AMP8I_PHS8I_t nearest_neighbor(const std::complex& v) const; - -private: - //! The sorted set of possible magnitudes order from small to large. - std::vector uncached_magnitudes; // Order is important! This must be ... - const std::vector& magnitudes; // ... before this. - - //! The difference in phase angle between two UINT phase values. - long double phase_delta; - //! Unit vector rays that represent each direction that phase can point. - std::array, UINT8_MAX + 1> phase_directions; -}; -} -} -} -#endif // SIX_six_sicd_ComplexToAMP8IPHS8I_h_INCLUDED_ diff --git a/six/modules/c++/six.sicd/include/six/sicd/ImageData.h b/six/modules/c++/six.sicd/include/six/sicd/ImageData.h index 10d57f773c..36e0093949 100644 --- a/six/modules/c++/six.sicd/include/six/sicd/ImageData.h +++ b/six/modules/c++/six.sicd/include/six/sicd/ImageData.h @@ -40,15 +40,6 @@ namespace six namespace sicd { using cx_float = std::complex; -struct AMP8I_PHS8I_t final // std::pair isn't trivial_copyable() -{ - uint8_t first; // amplitude - uint8_t second; // phase -}; -//! Fixed size 256 element array of complex values. -using input_values_t = std::array, UINT8_MAX + 1>; -//! Fixed size 256 x 256 matrix of complex values. -using input_amplitudes_t = std::array; class GeoData; /*! @@ -106,22 +97,18 @@ struct ImageData bool validate(const GeoData& geoData, logging::Logger& log) const; - // It would be nice to cache the results, but amplitudeTable could change at any time. - cx_float from_AMP8I_PHS8I(const AMP8I_PHS8I_t&) const; // for unit-tests - static void to_AMP8I_PHS8I(const AmplitudeTable*, std::span, std::span, ptrdiff_t cutoff = -1); // for unit-tests + static void testing_fromComplex_(std::span, std::span); // for unit-tests - static void from_AMP8I_PHS8I(const input_amplitudes_t& lookup, std::span, std::span, ptrdiff_t cutoff = -1); - void from_AMP8I_PHS8I(std::span, std::span, ptrdiff_t cutoff = -1) const; - void to_AMP8I_PHS8I(std::span, std::span, ptrdiff_t cutoff = -1) const; + static void toComplex(const six::Amp8iPhs8iLookup_t& lookup, std::span, std::span); + void toComplex(std::span, std::span) const; + void fromComplex(std::span, std::span) const; /*! * Create a lookup table for converting from AMP8I_PHS8I to complex. * @param pAmplitudeTable Input amplitude table. May be nullptr if no amplitude table is defined. - * @param pValues_ Output table's scope to keep it around past the function call. May be empty if there was no input amplitude table. * @return reference to the output lookup table. */ - static const input_amplitudes_t& get_RE32F_IM32F_values(const six::AmplitudeTable* pAmplitudeTable, - std::unique_ptr& pValues_); + static const six::Amp8iPhs8iLookup_t& getLookup(const six::AmplitudeTable* pAmplitudeTable); }; } diff --git a/six/modules/c++/six.sicd/include/six/sicd/Utilities.h b/six/modules/c++/six.sicd/include/six/sicd/Utilities.h index 898a000c77..241866e8f6 100644 --- a/six/modules/c++/six.sicd/include/six/sicd/Utilities.h +++ b/six/modules/c++/six.sicd/include/six/sicd/Utilities.h @@ -19,8 +19,9 @@ * see . * */ -#ifndef __SIX_SICD_UTILITIES_H__ -#define __SIX_SICD_UTILITIES_H__ +#pragma once +#ifndef SIX_six_sicd_Utilities_h_INCLUDED_ +#define SIX_six_sicd_Utilities_h_INCLUDED_ #include #include @@ -41,9 +42,8 @@ namespace six { namespace sicd { -class Utilities +struct Utilities final { -public: /*! * Build SceneGeometry from ComplexData members * \param data ComplexData from which to construct Geometry @@ -628,7 +628,16 @@ class Utilities const std::vector >& opPixels, std::vector >& spPixels); - static std::complex from_AMP8I_PHS8I(uint8_t input_amplitude, uint8_t input_value, const six::AmplitudeTable*); + // https://en.cppreference.com/w/cpp/algorithm/iota + // Generating all `uint8_t` values is slightly tricky because wrap-around/overflow must be avoided. + static std::vector iota_0_256(); // [0, 256), i.e., [0x00, 0xff] + + // Convert the amp/phase to a complex value using the given AmplitudeTable, if any. + // This call could be in a tight loop where the value of six::AmplitudeTable* is known outside of the loop; + // the overloads allow clients to avoid an inner `if`-check. + static std::complex toComplex(uint8_t amplitude, uint8_t phase, const six::AmplitudeTable* pAmplitudeTable); + static std::complex toComplex(uint8_t amplitude, uint8_t phase, const six::AmplitudeTable&); + static std::complex toComplex(uint8_t amplitude, uint8_t phase); }; @@ -654,9 +663,9 @@ extern void writeAsNITF(const std::filesystem::path&, const std::vector> make_complex_image(const types::RowCol&); - extern std::vector toBytes(const ComplexImageResult&, ptrdiff_t cutoff=-1); + extern std::vector toBytes(const ComplexImageResult&); } } } -#endif +#endif // SIX_six_sicd_Utilities_h_INCLUDED_ diff --git a/six/modules/c++/six.sicd/six.sicd.vcxproj b/six/modules/c++/six.sicd/six.sicd.vcxproj index 92b676a1ef..52ac800096 100644 --- a/six/modules/c++/six.sicd/six.sicd.vcxproj +++ b/six/modules/c++/six.sicd/six.sicd.vcxproj @@ -107,7 +107,6 @@ - diff --git a/six/modules/c++/six.sicd/six.sicd.vcxproj.filters b/six/modules/c++/six.sicd/six.sicd.vcxproj.filters index 0c3499b609..d8d539a33f 100644 --- a/six/modules/c++/six.sicd/six.sicd.vcxproj.filters +++ b/six/modules/c++/six.sicd/six.sicd.vcxproj.filters @@ -129,9 +129,6 @@ Header Files - - Header Files - diff --git a/six/modules/c++/six.sicd/source/ComplexData.cpp b/six/modules/c++/six.sicd/source/ComplexData.cpp index 4c3fdcf106..12d47d3502 100644 --- a/six/modules/c++/six.sicd/source/ComplexData.cpp +++ b/six/modules/c++/six.sicd/source/ComplexData.cpp @@ -369,15 +369,16 @@ inline std::span make_span(std::span bytes) return std::span(static_cast(cast_to_pvoid(bytes)), size); } -bool six::sicd::ComplexData::convertPixels_(std::span from_, std::span to_, ptrdiff_t cutoff) const +bool six::sicd::ComplexData::convertPixels_(std::span from_, std::span to_) const { if (getPixelType() != PixelType::AMP8I_PHS8I) { return false; // no conversion done as there is nothing to convert } + // Convert the pixels from a complex to AMP8I_PHS8I. const auto from = make_span(from_); - const auto to = make_span(to_); - imageData->to_AMP8I_PHS8I(from, to, cutoff); + const auto to = make_span(to_); + imageData->fromComplex(from, to); return true; // converted } diff --git a/six/modules/c++/six.sicd/source/ComplexToAMP8IPHS8I.cpp b/six/modules/c++/six.sicd/source/ComplexToAMP8IPHS8I.cpp index 63ca2d1d40..29211eb5bc 100644 --- a/six/modules/c++/six.sicd/source/ComplexToAMP8IPHS8I.cpp +++ b/six/modules/c++/six.sicd/source/ComplexToAMP8IPHS8I.cpp @@ -19,9 +19,10 @@ * see . * */ -#include "six/sicd/ComplexToAMP8IPHS8I.h" +#include "six/AmplitudeTable.h" #include +#include #include #include @@ -31,6 +32,8 @@ #include #include +#include "six/sicd/Utilities.h" + // https://github.com/ngageoint/six-library/pull/537#issuecomment-1026453353 /* I can add more detail, but be warned that my powerpoint skills aren't amazing and this is best drawn on a whiteboard or graph paper. @@ -65,17 +68,17 @@ inline long double GetPhase(const std::complex& v) return phase; } -static std::vector make_magnitudes(const six::AmplitudeTable* pAmplitudeTable) +template +static std::vector make_magnitudes_(TToComplexFunc toComplex) { - std::vector retval(UINT8_MAX + 1); - for (size_t i = 0; i <= UINT8_MAX; i++) // Be careful with indexing so that we don't wrap-around in the loops. + std::vector retval; + retval.reserve(UINT8_MAX + 1); + for (const auto amplitude : six::sicd::Utilities::iota_0_256()) { - static_assert(sizeof(size_t) > sizeof(uint8_t), "size_t can't hold UINT8_MAX!"); // AmpPhase -> Complex - const auto amplitude = gsl::narrow(i); - const auto value = amplitude; - const auto complex = six::sicd::Utilities::from_AMP8I_PHS8I(amplitude, value, pAmplitudeTable); - retval[i] = std::abs(complex); + const auto phase = amplitude; + const auto complex = toComplex(amplitude, phase); + retval.push_back(std::abs(complex)); } // I don't know if we can guarantee that the amplitude table is non-decreasing. @@ -86,90 +89,115 @@ static std::vector make_magnitudes(const six::AmplitudeTable* pAmpl } return retval; } +static inline auto make_magnitudes(const six::AmplitudeTable& amplitudeTable) +{ + const auto toComplex = [&](auto amplitude, auto phase) + { + return six::sicd::Utilities::toComplex(amplitude, phase, amplitudeTable); + }; + return make_magnitudes_(toComplex); +} +static inline auto make_magnitudes() +{ + static const auto toComplex = [](auto amplitude, auto phase) + { + return six::sicd::Utilities::toComplex(amplitude, phase); + }; + return make_magnitudes_(toComplex); +} + static const std::vector& get_magnitudes(const six::AmplitudeTable* pAmplitudeTable, std::vector& uncached_magnitudes) { if (pAmplitudeTable == nullptr) { - static const auto magnitudes = make_magnitudes(nullptr); // OK to cache, won't change + static const auto magnitudes = make_magnitudes(); // OK to cache, won't change return magnitudes; } - uncached_magnitudes = make_magnitudes(pAmplitudeTable); + uncached_magnitudes = make_magnitudes(*pAmplitudeTable); return uncached_magnitudes; } six::sicd::details::ComplexToAMP8IPHS8I::ComplexToAMP8IPHS8I(const six::AmplitudeTable *pAmplitudeTable) : magnitudes(get_magnitudes(pAmplitudeTable, uncached_magnitudes)) { - const auto p0 = GetPhase(Utilities::from_AMP8I_PHS8I(1, 0, pAmplitudeTable)); - const auto p1 = GetPhase(Utilities::from_AMP8I_PHS8I(1, 1, pAmplitudeTable)); + const auto p0 = GetPhase(Utilities::toComplex(1, 0, pAmplitudeTable)); + const auto p1 = GetPhase(Utilities::toComplex(1, 1, pAmplitudeTable)); assert(p0 == 0.0); assert(p1 > p0); phase_delta = p1 - p0; - for(size_t i = 0; i <= UINT8_MAX; i++) // Be careful with indexing so that we don't wrap-around in the loops. + size_t i = 0; + for(const auto value : six::sicd::Utilities::iota_0_256()) { - static_assert(sizeof(size_t) > sizeof(uint8_t), "size_t can't hold UINT8_MAX!"); - const units::Radians angle{ p0 + gsl::narrow_cast(i) * phase_delta }; + const units::Radians angle{ p0 + value * phase_delta }; long double y, x; SinCos(angle, y, x); phase_directions[i] = { x, y }; + i++; } } /*! * Find the nearest element given an iterator range. - * @tparam TIter type of iterator - * @param begin beginning of search range - * @param end end of search range * @param value query value * @return index of nearest value within the iterator range. */ -template -static uint8_t nearest(const TIter& begin, const TIter& end, long double value) +static inline uint8_t nearest(const std::vector& magnitudes, long double value) { + const auto begin = magnitudes.begin(); + const auto end = magnitudes.end(); + const auto it = std::lower_bound(begin, end, value); - if(it == begin) return 0; + if (it == begin) return 0; const auto prev_it = std::prev(it); - const auto nearest = (it == end || value - *prev_it <= *it - value) ? prev_it : it; - const auto distance = std::distance(begin, nearest); + const auto nearest_it = it == end ? prev_it : + (value - *prev_it <= *it - value ? prev_it : it); + const auto distance = std::distance(begin, nearest_it); assert(distance <= std::numeric_limits::max()); return gsl::narrow(distance); } -six::sicd::AMP8I_PHS8I_t six::sicd::details::ComplexToAMP8IPHS8I::nearest_neighbor(const std::complex &v) const +six::AMP8I_PHS8I_t six::sicd::details::ComplexToAMP8IPHS8I::nearest_neighbor(const std::complex &v) const { - six::sicd::AMP8I_PHS8I_t retval; + six::AMP8I_PHS8I_t retval; // Phase is determined via arithmetic because it's equally spaced. // There's an intentional conversion to zero when we cast 256 -> uint8. That wrap around // handles cases that are close to 2PI. - retval.second = gsl::narrow_cast(std::round(GetPhase(v) / phase_delta)); + retval.phase = gsl::narrow_cast(std::round(GetPhase(v) / phase_delta)); // We have to do a 1D nearest neighbor search for magnitude. // But it's not the magnitude of the input complex value - it's the projection of // the complex value onto the ray of candidate magnitudes at the selected phase. // i.e. dot product. - auto&& phase_direction = phase_directions[retval.second]; + auto&& phase_direction = phase_directions[retval.phase]; const auto projection = phase_direction.real() * v.real() + phase_direction.imag() * v.imag(); //assert(std::abs(projection - std::abs(v)) < 1e-5); // TODO ??? - retval.first = nearest(magnitudes.begin(), magnitudes.end(), projection); + retval.amplitude = nearest(magnitudes, projection); return retval; } -const six::sicd::details::ComplexToAMP8IPHS8I* six::sicd::details::ComplexToAMP8IPHS8I::make(const six::AmplitudeTable* pAmplitudeTable, - std::unique_ptr& pTree) +const six::sicd::details::ComplexToAMP8IPHS8I& six::sicd::details::ComplexToAMP8IPHS8I::make(const six::AmplitudeTable* pAmplitudeTable) { if (pAmplitudeTable == nullptr) { // this won't change, so OK to cache static const six::sicd::details::ComplexToAMP8IPHS8I tree; - return &tree; + return tree; } else { - pTree.reset(new six::sicd::details::ComplexToAMP8IPHS8I(pAmplitudeTable)); - return pTree.get(); + auto pFromComplex = pAmplitudeTable->getFromComplex(); + if (pFromComplex != nullptr) + { + return *pFromComplex; + } + + // constructor is private, can't use make_unique + std::unique_ptr pTree(new six::sicd::details::ComplexToAMP8IPHS8I(pAmplitudeTable)); + pAmplitudeTable->cacheFromComplex_(std::move(pTree)); + return *(pAmplitudeTable->getFromComplex()); } } \ No newline at end of file diff --git a/six/modules/c++/six.sicd/source/ImageData.cpp b/six/modules/c++/six.sicd/source/ImageData.cpp index 60511ebcd2..c92ef781fe 100644 --- a/six/modules/c++/six.sicd/source/ImageData.cpp +++ b/six/modules/c++/six.sicd/source/ImageData.cpp @@ -32,9 +32,12 @@ #include #include +#include "six/AmplitudeTable.h" #include "six/sicd/GeoData.h" #include "six/sicd/Utilities.h" -#include "six/sicd/ComplexToAMP8IPHS8I.h" + +using namespace six; +using namespace six::sicd; // There was in coda-oss, but I removed it. // @@ -42,47 +45,44 @@ // bit "half baked," and perhaps shouldn't be emulated. Then, C++17 added // parallel algorithms which might be a better way of satisfying our immediate // needs (below) ... although we're still at C++14. -namespace +template +static inline OutputIt transform_async(const InputIt first1, const InputIt last1, OutputIt d_first, TFunc f, + typename std::iterator_traits::difference_type cutoff) { - namespace details + // https://en.cppreference.com/w/cpp/thread/async + const auto len = std::distance(first1, last1); + if (len < cutoff) { - template - inline OutputIt transform_async(const InputIt first1, const InputIt last1, OutputIt d_first, TFunc f, - typename std::iterator_traits::difference_type cutoff, std::launch policy) - { - // https://en.cppreference.com/w/cpp/thread/async - const auto len = std::distance(first1, last1); - if (len < cutoff) - { - return std::transform(first1, last1, d_first, f); - } - - const auto mid1 = first1 + len / 2; - const auto d_mid = d_first + len / 2; - auto handle = std::async(policy, transform_async, mid1, last1, d_mid, f, cutoff, policy); - details::transform_async(first1, mid1, d_first, f, cutoff, policy); - return handle.get(); - } + return std::transform(first1, last1, d_first, f); } - template - inline OutputIt transform_async(const InputIt first1, const InputIt last1, OutputIt d_first, TFunc f, - typename std::iterator_traits::difference_type cutoff, std::launch policy) + + constexpr auto policy = std::launch::async; + + const auto mid1 = first1 + len / 2; + const auto d_mid = d_first + len / 2; + auto handle = std::async(policy, transform_async, mid1, last1, d_mid, f, cutoff); + transform_async(first1, mid1, d_first, f, cutoff); + return handle.get(); +} +template +static inline void transform(std::span inputs, std::span results, TFunc f) +{ + constexpr ptrdiff_t cutoff_ = 0; // too slow w/o multi-threading + if (cutoff_ < 0) { - // details::... eliminates the overload - return details::transform_async(first1, last1, d_first, f, cutoff, policy); + std::ignore = std::transform(inputs.begin(), inputs.end(), results.begin(), f); } - template - inline OutputIt transform_async(const InputIt first1, const InputIt last1, OutputIt d_first, TFunc f, - typename std::iterator_traits::difference_type cutoff) + else { - const std::launch policy = std::launch::deferred | std::launch::async; - return transform_async(first1, last1, d_first, f, cutoff, policy); + // The value of "default_cutoff" was determined by testing; there is nothing special about it, feel free to change it. + constexpr auto dimension = 128 * 8; + constexpr auto default_cutoff = dimension * dimension; + const auto cutoff = cutoff_ == 0 ? default_cutoff : cutoff_; + + std::ignore = transform_async(inputs.begin(), inputs.end(), results.begin(), f, cutoff); } } -using namespace six; -using namespace six::sicd; - bool ImageData::operator==(const ImageData& rhs) const { return (pixelType == rhs.pixelType && @@ -175,167 +175,98 @@ bool ImageData::validate(const GeoData& geoData, logging::Logger& log) const return valid; } -struct KDNode_t final +template +static auto createLookup(TToComplexFunc toComplex) { - cx_float result; - AMP8I_PHS8I_t amp_and_value; -}; -static std::vector make_nodes(const six::AmplitudeTable* pAmplitudeTable) -{ - // For all possible amp/phase values (there are "only" 256*256), get and save the + auto retval = std::make_unique(); // too big for the stack + auto& values = *retval; + + // For all possible amp/phase values (there are "only" 256*256=65536), get and save the // complex value. - // - // Be careful with indexing so that we don't wrap-around in the loops. - std::vector retval; - retval.reserve(UINT8_MAX * UINT8_MAX); - for (uint16_t input_amplitude = 0; input_amplitude <= UINT8_MAX; input_amplitude++) + for (const auto amplitude : Utilities::iota_0_256()) { - KDNode_t v; - v.amp_and_value.first = gsl::narrow(input_amplitude); - - for (uint16_t input_value = 0; input_value <= UINT8_MAX; input_value++) + for (const auto phase : Utilities::iota_0_256()) { - v.amp_and_value.second = gsl::narrow(input_value); - v.result = six::sicd::Utilities::from_AMP8I_PHS8I(v.amp_and_value.first, v.amp_and_value.second, pAmplitudeTable); - retval.push_back(v); + values[amplitude][phase] = toComplex(amplitude, phase); } } + return retval; } - -// input_amplitudes_t is too big for the stack -static std::unique_ptr AMP8I_PHS8I_to_RE32F_IM32F_(const six::AmplitudeTable* pAmplitudeTable) +static auto createLookup(const six::AmplitudeTable& amplitudeTable) { - // Get all 256x256 values for the AmplitudeTable - auto nodes = make_nodes(pAmplitudeTable); - - auto retval = std::make_unique(); - auto& values = *retval; - for (auto&& n : nodes) - { - values[n.amp_and_value.first][n.amp_and_value.second] = std::move(n.result); - } - - return retval; + const auto toComplex = [&litudeTable](auto amplitude, auto phase) { + return six::sicd::Utilities::toComplex(amplitude, phase, amplitudeTable); + }; + return createLookup(toComplex); } - -// This is a non-templatized function so that there is copy of the "static" data with a NULL AmplutdeTable. -static const input_amplitudes_t* get_cached_RE32F_IM32F_values(const six::AmplitudeTable* pAmplitudeTable) +static auto createLookup() { - if (pAmplitudeTable == nullptr) - { - static const auto RE32F_IM32F_values_no_amp = AMP8I_PHS8I_to_RE32F_IM32F_(nullptr); - return RE32F_IM32F_values_no_amp.get(); - } - return nullptr; + static const auto toComplex = [](auto amplitude, auto phase) { + return six::sicd::Utilities::toComplex(amplitude, phase); + }; + return createLookup(toComplex); } -std::complex ImageData::from_AMP8I_PHS8I(const AMP8I_PHS8I_t& input) const +static const six::Amp8iPhs8iLookup_t* getCachedLookup(const six::AmplitudeTable* pAmplitudeTable) { - if (pixelType != PixelType::AMP8I_PHS8I) - { - throw std::runtime_error("pxielType must be AMP8I_PHS8I"); - } - - auto const pAmplitudeTable = amplitudeTable.get(); - auto const pValues = get_cached_RE32F_IM32F_values(pAmplitudeTable); - - // Do we have a cahced result to use (no amplitude table)? - // Or must it be recomputed (have an amplutude table)? - if (pValues != nullptr) + if (pAmplitudeTable == nullptr) { - return (*pValues)[input.first][input.second]; + static const auto lookup_no_table = createLookup(); + return lookup_no_table.get(); } - const auto S = Utilities::from_AMP8I_PHS8I(input.first, input.second, pAmplitudeTable); - return std::complex(gsl::narrow_cast(S.real()), gsl::narrow_cast(S.imag())); + // Maybe one has already been created and stored on the table? + return pAmplitudeTable->getLookup(); } -const input_amplitudes_t& ImageData::get_RE32F_IM32F_values(const six::AmplitudeTable* pAmplitudeTable, - std::unique_ptr& pValues_) +const six::Amp8iPhs8iLookup_t& ImageData::getLookup(const six::AmplitudeTable* pAmplitudeTable) { - const input_amplitudes_t* pValues = get_cached_RE32F_IM32F_values(pAmplitudeTable); - if (pValues == nullptr) + auto pLookup = getCachedLookup(pAmplitudeTable); + if (pLookup == nullptr) { assert(pAmplitudeTable != nullptr); - pValues_ = AMP8I_PHS8I_to_RE32F_IM32F_(pAmplitudeTable); - pValues = pValues_.get(); + auto& amplitudeTable = *pAmplitudeTable; + auto lookup = createLookup(amplitudeTable); + amplitudeTable.cacheLookup_(std::move(lookup)); + pLookup = amplitudeTable.getLookup(); } - assert(pValues != nullptr); - return *pValues; + assert(pLookup != nullptr); + return *pLookup; } -void ImageData::from_AMP8I_PHS8I(std::span inputs, std::span> results, - ptrdiff_t cutoff_) const +void ImageData::toComplex(const six::Amp8iPhs8iLookup_t& values, std::span inputs, std::span> results) { - if (pixelType != PixelType::AMP8I_PHS8I) + const auto toComplex_ = [&values](const auto& v) { - throw std::runtime_error("pxielType must be AMP8I_PHS8I"); - } - - std::unique_ptr pValues_; - const auto& values = get_RE32F_IM32F_values(amplitudeTable.get(), pValues_); - from_AMP8I_PHS8I(values, inputs, results, cutoff_); + return values[v.amplitude][v.phase]; + }; + transform(inputs, results, toComplex_); } - -void ImageData::from_AMP8I_PHS8I(const input_amplitudes_t& values, std::span inputs, std::span> results, - ptrdiff_t cutoff_) +void ImageData::toComplex(std::span inputs, std::span> results) const { - const auto get_RE32F_IM32F_value_f = [&values](const six::sicd::AMP8I_PHS8I_t& v) - { - return values[v.first][v.second]; - }; - - if (cutoff_ < 0) - { - std::ignore = std::transform(inputs.begin(), inputs.end(), results.begin(), - get_RE32F_IM32F_value_f); - } - else + if (pixelType != PixelType::AMP8I_PHS8I) { - // The value of "default_cutoff" was determined by testing; there is nothing special about it, feel free to change it. - constexpr auto dimension = 128 * 8; - constexpr auto default_cutoff = dimension * dimension; - const auto cutoff = cutoff_ == 0 ? default_cutoff : cutoff_; - std::ignore = transform_async(inputs.begin(), inputs.end(), results.begin(), - get_RE32F_IM32F_value_f, cutoff, std::launch::async); + throw std::runtime_error("pxielType must be AMP8I_PHS8I"); } + + const auto& values = getLookup(amplitudeTable.get()); + toComplex(values, inputs, results); } -template -static void to_AMP8I_PHS8I_(std::span inputs, std::span results, - const TConverter& tree, ptrdiff_t cutoff_) +void ImageData::fromComplex(std::span inputs, std::span results) const { - const auto nearest_neighbor_f = [&](const std::complex& v) + // make a structure to quickly find the nearest neighbor + auto& converter = six::sicd::details::ComplexToAMP8IPHS8I::make(amplitudeTable.get()); + const auto fromComplex_ = [&converter](const auto& v) { - return tree.nearest_neighbor(v); + return converter.nearest_neighbor(v); }; - - if (cutoff_ < 0) - { - std::ignore = std::transform(inputs.begin(), inputs.end(), results.begin(), - nearest_neighbor_f); - } - else - { - // The value of "default_cutoff" was determined by testing; there is nothing special about it, feel free to change it. - constexpr auto dimension = 128 * 8; - constexpr auto default_cutoff = dimension * dimension; - const auto cutoff = cutoff_ == 0 ? default_cutoff : cutoff_; - std::ignore = transform_async(inputs.begin(), inputs.end(), results.begin(), - nearest_neighbor_f, cutoff, std::launch::async); - } + transform(inputs, results, fromComplex_); } -void ImageData::to_AMP8I_PHS8I(std::span inputs, std::span results, - ptrdiff_t cutoff) const +void ImageData::testing_fromComplex_(std::span inputs, std::span results) { - to_AMP8I_PHS8I(amplitudeTable.get(), inputs, results, cutoff); -} -void ImageData::to_AMP8I_PHS8I(const AmplitudeTable* pAmplitudeTable, - std::span inputs, std::span results, ptrdiff_t cutoff) -{ - // make a structure to quickly find the nearest neighbor - std::unique_ptr pConvert; // not-cached, non-NULL amplitudeTable - const auto& converter = *(six::sicd::details::ComplexToAMP8IPHS8I::make(pAmplitudeTable, pConvert)); - to_AMP8I_PHS8I_(inputs, results, converter, cutoff); + static const ImageData imageData; + assert(imageData.amplitudeTable.get() == nullptr); + imageData.fromComplex(inputs, results); } diff --git a/six/modules/c++/six.sicd/source/Utilities.cpp b/six/modules/c++/six.sicd/source/Utilities.cpp index 71ef8251a4..3bd9c225ae 100644 --- a/six/modules/c++/six.sicd/source/Utilities.cpp +++ b/six/modules/c++/six.sicd/source/Utilities.cpp @@ -32,24 +32,26 @@ #include #include #include +#include #include #include #include #include #include +#include +#include +#include +#include #include +#include +#include #include #include #include #include #include -#include -#include -#include -#include -#include #include #include #include @@ -81,24 +83,11 @@ six::Region buildRegion(const types::RowCol& offset, } } -std::complex six::sicd::Utilities::from_AMP8I_PHS8I(uint8_t input_amplitude, uint8_t input_value, const six::AmplitudeTable* pAmplitudeTable) +static std::complex toComplex_(long double A, uint8_t phase) { - long double A = 0.0; - if (pAmplitudeTable != nullptr) - { - // A = AmpTable( input_amplitude ) - auto& AmpTable = *(pAmplitudeTable); - A = AmpTable.index(input_amplitude); - } - else - { - // A = input_amplitude(i.e. 0 to 255) - A = input_amplitude; - } - // The phase values should be read in (values 0 to 255) and converted to float by doing: // P = (1 / 256) * input_value - const long double P = (1.0 / 256.0) * input_value; + const long double P = (1.0 / 256.0) * phase; // To convert the amplitude and phase values to complex float (i.e. real and imaginary): // S = A * cos(2 * pi * P) + j * A * sin(2 * pi * P) @@ -108,6 +97,47 @@ std::complex six::sicd::Utilities::from_AMP8I_PHS8I(uint8_t input_a std::complex S(A * cos_angle, A * sin_angle); return S; } +std::complex six::sicd::Utilities::toComplex(uint8_t amplitude, uint8_t phase) +{ + // A = input_amplitude(i.e. 0 to 255) + const long double A = amplitude; + return toComplex_(A, phase); +} +std::complex six::sicd::Utilities::toComplex(uint8_t amplitude, uint8_t phase, const six::AmplitudeTable& amplitudeTable) +{ + const long double A = amplitudeTable.index(amplitude); + return toComplex_(A, phase); +} +std::complex six::sicd::Utilities::toComplex(uint8_t amplitude, uint8_t phase, const six::AmplitudeTable* pAmplitudeTable) +{ + if (pAmplitudeTable != nullptr) + { + return toComplex(amplitude, phase, *pAmplitudeTable); + } + else + { + return toComplex(amplitude, phase); + } +} + +static auto iota_0_256_() +{ + static_assert(sizeof(size_t) > sizeof(uint8_t), "size_t can't hold UINT8_MAX!"); + + std::vector retval; + retval.reserve(UINT8_MAX + 1); + for (size_t i = 0; i <= UINT8_MAX; i++) // Be careful with indexing so that we don't wrap-around in the loop. + { + retval.push_back(gsl::narrow(i)); + } + assert(retval.size() == UINT8_MAX + 1); + return retval; +} +std::vector six::sicd::Utilities::iota_0_256() +{ + static const auto retval = iota_0_256_(); + return retval; +} namespace { @@ -174,27 +204,25 @@ class SICD_readerAndConverter final // There's type mangling going on here. // We're taking std::vector and saying it's packed with std::pair. - static_assert(sizeof(uint8_t) * 2 == sizeof(six::sicd::AMP8I_PHS8I_t), "expected packed layout in pair"); - auto packed = reinterpret_cast(tempVector.data()); + static_assert(sizeof(uint8_t) * 2 == sizeof(six::AMP8I_PHS8I_t), "expected packed layout in pair"); + auto packed = reinterpret_cast(tempVector.data()); // Reuse image data's conversion to complex. - static const ptrdiff_t kDefaultCutoff = 0; size_t count = (elementsPerRow * rowsToRead) / 2; - std::span input(packed, count); - std::span> output(bufferPtr, input.size()); - six::sicd::ImageData::from_AMP8I_PHS8I(lookup, input, output, kDefaultCutoff); + auto const input = sys::make_span(packed, count); + auto const output = sys::make_span(bufferPtr, input.size()); + six::sicd::ImageData::toComplex(lookup, input, output); } const types::RowCol& offset; std::complex* buffer; - std::unique_ptr lookupScope; - const six::sicd::input_amplitudes_t& lookup; + const six::Amp8iPhs8iLookup_t& lookup; public: SICD_readerAndConverter(six::NITFReadControl& reader, size_t imageNumber, const types::RowCol& offset, const types::RowCol& extent, size_t elementsPerRow, std::complex* buffer, const six::AmplitudeTable* pAmplitudeTable = nullptr) - : offset(offset), buffer(buffer), lookupScope(nullptr), lookup(six::sicd::ImageData::get_RE32F_IM32F_values(pAmplitudeTable, lookupScope)) + : offset(offset), buffer(buffer), lookup(six::sicd::ImageData::getLookup(pAmplitudeTable)) { SICDreader(reader, imageNumber, offset, extent, elementsPerRow, [&](size_t elementsPerRow, size_t row, size_t rowsToRead, const std::vector& tempVector) @@ -1640,7 +1668,7 @@ std::vector> six::sicd::testing::make_complex_image(const ty return image; } -std::vector six::sicd::testing::toBytes(const ComplexImageResult& result, ptrdiff_t cutoff) +std::vector six::sicd::testing::toBytes(const ComplexImageResult& result) { const auto& image = result.widebandData; const auto bytes = sys::as_bytes(image); @@ -1650,7 +1678,7 @@ std::vector six::sicd::testing::toBytes(const ComplexImageResult& res if (data.getPixelType() == six::PixelType::AMP8I_PHS8I) { retval.resize(image.size() * data.getNumBytesPerPixel()); - data.convertPixels(bytes, sys::make_span(retval), cutoff); + data.convertPixels(bytes, sys::make_span(retval)); } else { diff --git a/six/modules/c++/six.sicd/unittests/test_AMP8I_PHS8I.cpp b/six/modules/c++/six.sicd/unittests/test_AMP8I_PHS8I.cpp index 7f2ef7bf1e..1706424671 100644 --- a/six/modules/c++/six.sicd/unittests/test_AMP8I_PHS8I.cpp +++ b/six/modules/c++/six.sicd/unittests/test_AMP8I_PHS8I.cpp @@ -44,7 +44,7 @@ #include #include #include -#include +#include #include #include #include @@ -56,7 +56,7 @@ #pragma warning(disable: 4459) // declaration of '...' hides global declaration #endif -using AMP8I_PHS8I_t = six::sicd::AMP8I_PHS8I_t; +using AMP8I_PHS8I_t = six::AMP8I_PHS8I_t; static std::shared_ptr getContainer(six::sicd::NITFReadComplexXMLControl& reader) { @@ -133,7 +133,7 @@ static void test_assert_eq(const std::string& testName, for (size_t i = 0; i < actuals.size(); i++) { const auto& v = amp8i_phs8i[i]; - const auto S = six::sicd::Utilities::from_AMP8I_PHS8I(v.first, v.second, nullptr); + const auto S = six::sicd::Utilities::toComplex(v.amplitude, v.phase); const std::complex result(gsl::narrow_cast(S.real()), gsl::narrow_cast(S.imag())); const auto& expected = actuals[i]; TEST_ASSERT_EQ(expected, result); @@ -141,19 +141,19 @@ static void test_assert_eq(const std::string& testName, } static void from_AMP8I_PHS8I(const six::sicd::ImageData& imageData, - const std::vector& inputs_, std::vector>& results_, ptrdiff_t cutoff = -1) + const std::vector& inputs_, std::vector>& results_) { const std::span inputs(inputs_.data(), inputs_.size()); const std::span> results(results_.data(), results_.size()); - imageData.from_AMP8I_PHS8I(inputs, results, cutoff); + imageData.toComplex(inputs, results); } static void to_AMP8I_PHS8I(const six::sicd::ImageData& imageData, - const std::vector>& inputs_, std::vector& results_, ptrdiff_t cutoff = -1) + const std::vector>& inputs_, std::vector& results_) { const std::span> inputs(inputs_.data(), inputs_.size()); const std::span results(results_.data(), results_.size()); - imageData.to_AMP8I_PHS8I(inputs, results, cutoff); + imageData.fromComplex(inputs, results); } TEST_CASE(test_8bit_ampphs) @@ -163,12 +163,12 @@ TEST_CASE(test_8bit_ampphs) std::vector inputs; std::vector> expecteds; - for (uint16_t input_amplitude = 0; input_amplitude <= UINT8_MAX; input_amplitude++) + for (const auto amplitude : six::sicd::Utilities::iota_0_256()) { - for (uint16_t input_value = 0; input_value <= UINT8_MAX; input_value++) + for (const auto phase : six::sicd::Utilities::iota_0_256()) { - AMP8I_PHS8I_t input{ static_cast(input_amplitude), static_cast(input_value) }; - const auto S = six::sicd::Utilities::from_AMP8I_PHS8I(static_cast(input_amplitude), static_cast(input_value), nullptr); + AMP8I_PHS8I_t input{ amplitude, phase }; + const auto S = six::sicd::Utilities::toComplex(amplitude, phase); inputs.push_back(std::move(input)); expecteds.emplace_back(gsl::narrow_cast(S.real()), gsl::narrow_cast(S.imag())); @@ -186,8 +186,7 @@ TEST_CASE(test_8bit_ampphs) test_assert_eq(testName, actuals, amp8i_phs8i); // ... and again, async - const auto cutoff = actuals.size() / 10; // be sure std::async is called - to_AMP8I_PHS8I(imageData, actuals, amp8i_phs8i, cutoff); + to_AMP8I_PHS8I(imageData, actuals, amp8i_phs8i); test_assert_eq(testName, actuals, amp8i_phs8i); } @@ -219,7 +218,7 @@ static std::vector > read_8bit_ampphs(const std::string& tes const auto pAmplitudeTable = imageData.amplitudeTable.get(); if (pAmplitudeTable != nullptr) { - amplitudeTable = *pAmplitudeTable; + amplitudeTable = std::move(*pAmplitudeTable); } const auto numBytesPerPixel = complexData.getNumBytesPerPixel(); @@ -246,13 +245,13 @@ static Pair to_AMP8I_PHS8I(const six::sicd::ImageData& imageData, cons const auto size = sys::debug ? widebandData.size() / 200 : widebandData.size(); const std::span> widebandData_(widebandData.data(), size); std::vector results(widebandData_.size()); - imageData.to_AMP8I_PHS8I(widebandData_, std::span< AMP8I_PHS8I_t>(results.data(), results.size()), 0); + imageData.fromComplex(widebandData_, std::span< AMP8I_PHS8I_t>(results.data(), results.size())); Pair retval{ 0, 0 }; for (const auto& r : results) { - retval.first += r.first; - retval.second += r.second; + retval.first += r.amplitude; + retval.second += r.phase; } return retval; } @@ -268,7 +267,7 @@ TEST_CASE(read_8bit_ampphs_with_table) const auto widebandData = read_8bit_ampphs(testName, inputPathname, amplitudeTable, pComplexData, expected_sum); TEST_ASSERT_TRUE(amplitudeTable.has_value()); - const auto& AmpTable = amplitudeTable.value(); + auto& AmpTable = amplitudeTable.value(); for (size_t i = 0; i < AmpTable.size(); i++) { // be sure we don't have garbage data @@ -276,7 +275,7 @@ TEST_CASE(read_8bit_ampphs_with_table) } six::sicd::ImageData imageData; - imageData.amplitudeTable.reset(std::make_unique< six::AmplitudeTable>(AmpTable)); + imageData.amplitudeTable.reset(std::make_unique< six::AmplitudeTable>(std::move(AmpTable))); const auto actual = to_AMP8I_PHS8I(imageData, widebandData); const auto expected(sys::debug ? Pair{12647523, 16973148} : Pair{ 3044868397, 3394353166 }); @@ -402,7 +401,7 @@ static std::vector> adjust_image(const six::sicd::ComplexDat std::span from(from_.data(), from_.size()); std::vector> retval(from.size()); - complexData.imageData->from_AMP8I_PHS8I(from, std::span>(retval.data(), retval.size())); + complexData.imageData->toComplex(from, std::span>(retval.data(), retval.size())); return retval; } static std::vector> make_complex_image(const six::sicd::ComplexData& complexData, const types::RowCol& dims) @@ -509,14 +508,14 @@ static void test_assert_image_(const std::string& testName, const std::span> input(image.data(), image.size()); std::vector result(input.size()); std::span< AMP8I_PHS8I_t> result_(result.data(), result.size()); - complexData.imageData->to_AMP8I_PHS8I(input, result_); + complexData.imageData->fromComplex(input, result_); static const std::vector expected_amp8i_phs8i{ AMP8I_PHS8I_t{91, 42}, AMP8I_PHS8I_t{42, 42}, AMP8I_PHS8I_t{42, 42}, AMP8I_PHS8I_t{42, 93} }; // "[******]" for (size_t i = 0; i < result.size(); i++) { - TEST_ASSERT_EQ(result[i].first, expected_amp8i_phs8i[i].first); - TEST_ASSERT_EQ(result[i].second, expected_amp8i_phs8i[i].second); + TEST_ASSERT_EQ(result[i].amplitude, expected_amp8i_phs8i[i].amplitude); + TEST_ASSERT_EQ(result[i].phase, expected_amp8i_phs8i[i].phase); } } @@ -565,11 +564,11 @@ static void test_adjusted_values(const std::string& testName, const std::vector< std::vector actual(expected.size()); std::span actual_(actual.data(), actual.size()); std::span> values_(adjusted_values.data(), adjusted_values.size()); - six::sicd::ImageData::to_AMP8I_PHS8I(nullptr /*pAmplitudeTable*/, values_, actual_); + six::sicd::ImageData::testing_fromComplex_(values_, actual_); for (size_t i = 0; i < expected.size(); i++) { - TEST_ASSERT_EQ(expected[i].first, actual[i].first); - TEST_ASSERT_EQ(expected[i].second, actual[i].second); + TEST_ASSERT_EQ(expected[i].amplitude, actual[i].amplitude); + TEST_ASSERT_EQ(expected[i].phase, actual[i].phase); } } @@ -588,12 +587,12 @@ TEST_CASE(test_nearest_neighbor) std::vector actual(expected.size()); std::span actual_(actual.data(), actual.size()); std::span> values_(values.data(), values.size()); - six::sicd::ImageData::to_AMP8I_PHS8I(nullptr /*pAmplitudeTable*/, values_, actual_); + six::sicd::ImageData::testing_fromComplex_(values_, actual_); for (size_t i = 0; i < expected.size(); i++) { - TEST_ASSERT_EQ(expected[i].first, actual[i].first); - TEST_ASSERT_EQ(expected[i].second, actual[i].second); + TEST_ASSERT_EQ(expected[i].amplitude, actual[i].amplitude); + TEST_ASSERT_EQ(expected[i].phase, actual[i].phase); } auto other_expected = expected; @@ -601,29 +600,29 @@ TEST_CASE(test_nearest_neighbor) constexpr auto delta = 0.0122f; test_adjusted_values(testName, values, other_expected, std::complex(delta, 0.0f)); - other_expected[0].second = 32; + other_expected[0].phase = 32; test_adjusted_values(testName, values, other_expected, std::complex(delta, delta)); - other_expected[0].second += 32; + other_expected[0].phase += 32; test_adjusted_values(testName, values, other_expected, std::complex(0.0f, delta)); - other_expected[0].second += 32; + other_expected[0].phase += 32; test_adjusted_values(testName, values, other_expected, std::complex(-delta, delta)); - other_expected[0].second += 32; + other_expected[0].phase += 32; test_adjusted_values(testName, values, other_expected, std::complex(-delta, 0.0f)); - other_expected[0].second += 32; + other_expected[0].phase += 32; test_adjusted_values(testName, values, other_expected, std::complex(-delta, -delta)); - other_expected[0].second += 32; + other_expected[0].phase += 32; test_adjusted_values(testName, values, other_expected, std::complex(0.0f, -delta)); - other_expected[0].second += 32; + other_expected[0].phase += 32; test_adjusted_values(testName, values, other_expected, std::complex(delta, -delta)); - other_expected[0].second += 32; - TEST_ASSERT_EQ(other_expected[0].second, expected[0].second); + other_expected[0].phase += 32; + TEST_ASSERT_EQ(other_expected[0].phase, expected[0].phase); } TEST_CASE(test_verify_phase_uint8_ordering) @@ -632,7 +631,7 @@ TEST_CASE(test_verify_phase_uint8_ordering) // If this fails, then a core assumption of the ComplexToAmpPhase8I structure is wrong. auto to_phase = [](int v) { - double p = std::arg(six::sicd::Utilities::from_AMP8I_PHS8I(1, v, nullptr)); + double p = std::arg(six::sicd::Utilities::toComplex(1, v)); if(p < 0) p += 2.0 * M_PI; return p; }; @@ -674,8 +673,8 @@ static void do_test_ComplexToAMP8IPHS8I_(const std::string& testName, best = i; } } - TEST_ASSERT_EQ(test_integral.first, best.integral.first); - TEST_ASSERT_EQ(test_integral.second, best.integral.second); + TEST_ASSERT_EQ(test_integral.amplitude, best.integral.amplitude); + TEST_ASSERT_EQ(test_integral.phase, best.integral.phase); } using it_t = std::vector>::const_iterator; static void test_ComplexToAMP8IPHS8I_(const std::string& testName, @@ -710,20 +709,19 @@ TEST_CASE(test_ComplexToAMP8IPHS8I) { // Set up a converter that has a fake amplitude table. six::AmplitudeTable amplitudeTable; // "amp" is a (somewhat) reserved with MSVC - for(size_t i = 0; i < 256; i++) + for(const auto i : six::sicd::Utilities::iota_0_256()) { amplitudeTable.index(i) = static_cast(i) + 10.0; } - std::unique_ptr pTree; // not-cached, non-NULL amplitudeTable - const auto& item = *(six::sicd::details::ComplexToAMP8IPHS8I::make(&litudeTable, pTree)); + const auto& item = six::sicd::details::ComplexToAMP8IPHS8I::make(&litudeTable); // Generate the full 256x256 matrix of possible AMP8I_PHS8I values. std::vector candidates; - for(int i = 0; i < 256; i++) { - for(int j = 0; j < 256; j++) { + for(const auto amplitude : six::sicd::Utilities::iota_0_256()) { + for(const auto phase : six::sicd::Utilities::iota_0_256()) { Pairs p; - p.integral = {gsl::narrow(i), gsl::narrow(j)}; - p.floating = six::sicd::Utilities::from_AMP8I_PHS8I(i, j, &litudeTable); + p.integral = { amplitude, phase }; + p.floating = six::sicd::Utilities::toComplex(amplitude, phase, amplitudeTable); candidates.push_back(p); } } @@ -733,8 +731,8 @@ TEST_CASE(test_ComplexToAMP8IPHS8I) for(auto& i : candidates) { auto truth = i.integral; auto test = item.nearest_neighbor(std::complex(i.floating.real(), i.floating.imag())); - TEST_ASSERT_EQ(truth.first, test.first); - TEST_ASSERT_EQ(truth.second, test.second); + TEST_ASSERT_EQ(truth.amplitude, test.amplitude); + TEST_ASSERT_EQ(truth.phase, test.phase); } // Run an edge case that's very close to a phase of 2PI. @@ -742,7 +740,7 @@ TEST_CASE(test_ComplexToAMP8IPHS8I) std::complex problem { 1.0f, -1e-4f }; - TEST_ASSERT_EQ(item.nearest_neighbor(problem).second, 0); + TEST_ASSERT_EQ(item.nearest_neighbor(problem).phase, 0); // Verify the nearest neighbor property via random search through the possible space. // For each sampled point we check that we found the true nearest neighbor. diff --git a/six/modules/c++/six/include/six/Adapters.h b/six/modules/c++/six/include/six/Adapters.h index d3d9cbd165..7c15a9bbc2 100644 --- a/six/modules/c++/six/include/six/Adapters.h +++ b/six/modules/c++/six/include/six/Adapters.h @@ -156,22 +156,22 @@ class NewMemoryWriteHandler final : public nitf::WriteHandler // all of our code NewMemoryWriteHandler(const NITFSegmentInfo& info, std::span buffer, - size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t cutoff); + size_t firstRow, const Data& data, bool doByteSwap); NewMemoryWriteHandler(const NITFSegmentInfo& info, std::span buffer, - size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t); + size_t firstRow, const Data& data, bool doByteSwap); NewMemoryWriteHandler(const NITFSegmentInfo& info, std::span buffer, - size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t); + size_t firstRow, const Data& data, bool doByteSwap); NewMemoryWriteHandler(const NITFSegmentInfo& info, std::span> buffer, - size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t cutoff); + size_t firstRow, const Data& data, bool doByteSwap); NewMemoryWriteHandler(const NITFSegmentInfo& info, std::span> buffer, - size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t); + size_t firstRow, const Data& data, bool doByteSwap); NewMemoryWriteHandler(const NITFSegmentInfo& info, std::span> buffer, - size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t); + size_t firstRow, const Data& data, bool doByteSwap); }; diff --git a/six/modules/c++/six/include/six/AmplitudeTable.h b/six/modules/c++/six/include/six/AmplitudeTable.h new file mode 100644 index 0000000000..5f4e0e1fed --- /dev/null +++ b/six/modules/c++/six/include/six/AmplitudeTable.h @@ -0,0 +1,323 @@ +/* ========================================================================= + * This file is part of six-c++ + * ========================================================================= + * + * (C) Copyright 2004 - 2014, MDA Information Systems LLC + * + * six-c++ is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; If not, + * see . + * + */ +#pragma once +#ifndef SIX_six_AmplitudeTable_h_INCLUDED_ +#define SIX_six_AmplitudeTable_h_INCLUDED_ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "six/Enums.h" + +namespace six +{ +/*! + * \struct LUT + * \brief Lookup table + * + * This lookup table object has a number of entries (for pixel ops, + * this is usually 256), and an output space (size) which can be anything + * (e.g., 2 for short) depending on the type that is being housed + * + */ +struct LUT +{ + std::vector table; + size_t numEntries = 0; + size_t elementSize = 0; + + //! Initialize with a number of entries and known output space + LUT(size_t entries, size_t outputSpace) : + table(entries * outputSpace), + numEntries(entries), + elementSize(outputSpace) + { + } + + //! Initialize with an existing LUT, which we copy + LUT(const unsigned char* interleavedLUT, + size_t entries, + size_t outputSpace) : + table(interleavedLUT, interleavedLUT + entries * outputSpace), + numEntries(entries), + elementSize(outputSpace) + { + } + + //! Initialize from nitf::LookupTable read from a NITF + LUT(const nitf::LookupTable& lookupTable) : LUT(lookupTable.getEntries(), lookupTable.getTables()) + { + // NITF stores the tables consecutively. + // Need to interleave them for SIX + if (elementSize == 3) + { + // Imagine the vector is a matrix and then transpose it + for (size_t ii = 0; ii < table.size(); ++ii) + { + table[(ii % numEntries) * elementSize + + (ii / numEntries)] = lookupTable.getTable()[ii]; + } + } + + // I'm not sure why this is a special case, but elements get + // swapped if we try to use the above formula + else if (elementSize == 2) + { + for (size_t ii = 0; ii < numEntries; ++ii) + { + table[2 * ii] = lookupTable.getTable()[numEntries + ii]; + table[2 * ii + 1] = lookupTable.getTable()[ii]; + } + } + } + + virtual ~LUT() = default; + + bool operator==(const LUT& rhs) const + { + return (table == rhs.table && + numEntries == rhs.numEntries && + elementSize == rhs.elementSize); + } + + //! Gives back a pointer at table[i * elementSize] + unsigned char* operator[](size_t i) noexcept + { + return &(table[i * elementSize]); + } + + //! Gives back a pointer at table[i * elementSize] + const unsigned char* operator[](size_t i) const noexcept + { + return &(table[i * elementSize]); + } + + unsigned char* getTable() noexcept + { + return table.empty() ? nullptr : table.data(); + } + + const unsigned char* getTable() const noexcept + { + + return table.empty() ? nullptr : table.data(); + } + + virtual void clone(std::unique_ptr& result) const + { + result = std::make_unique(getTable(), numEntries, elementSize); + } + virtual LUT* clone() const + { + std::unique_ptr result; + clone(result); + return result.release(); + } +}; + +/*! + * \struct AmplitudeTable + * \brief SICD 'AmpTable' parameter + * + * This is a fixed size (256-element) LUT. For AMP8I_PHS8I data, + * the amplitude and phase parts are stored as unsigned 8-bit integers. + * If an amplitude table is given, the amplitude component should be + * interpreted as an index into the AmpTable, ultimately yielding the + * double precision amplitude value + */ + +// Store the computed `std::complex` for every possible +// amp/phs pair, a total of 256*256 values. + //! Fixed size 256 element array of complex values. +using phase_values_t = std::array, UINT8_MAX + 1>; +//! Fixed size 256 x 256 matrix of complex values. +using Amp8iPhs8iLookup_t = std::array; + +// More descriptive than std::pair +struct AMP8I_PHS8I_t final +{ + uint8_t amplitude; + uint8_t phase; +}; + +struct AmplitudeTable; // forward +namespace sicd +{ +namespace details +{ +/*! + * \brief A utility that's used to convert complex values into 8-bit amplitude and phase values. + * + * *** Implemetned in SIX.SICD *** + */ +class ComplexToAMP8IPHS8I final +{ + /*! + * Create a lookup structure that converts from complex to amplitude and phase. + * @param pAmplitudeTable optional amplitude table. + */ + explicit ComplexToAMP8IPHS8I(const six::AmplitudeTable* pAmplitudeTable = nullptr); + +public: + static const ComplexToAMP8IPHS8I& make(const six::AmplitudeTable* pAmplitudeTable); // AmplitudeTable* = NULL is cached + + ~ComplexToAMP8IPHS8I() = default; + ComplexToAMP8IPHS8I(const ComplexToAMP8IPHS8I&) = delete; + ComplexToAMP8IPHS8I& operator=(const ComplexToAMP8IPHS8I&) = delete; + ComplexToAMP8IPHS8I(ComplexToAMP8IPHS8I&&) = default; + ComplexToAMP8IPHS8I& operator=(ComplexToAMP8IPHS8I&&) = default; + + /*! + * Get the nearest amplitude and phase value given a complex value + * @param v complex value to query with + * @return nearest amplitude and phase value + */ + AMP8I_PHS8I_t nearest_neighbor(const std::complex& v) const; + +private: + //! The sorted set of possible magnitudes order from small to large. + std::vector uncached_magnitudes; // Order is important! This must be ... + const std::vector& magnitudes; // ... before this. + + //! The difference in phase angle between two UINT phase values. + long double phase_delta; + //! Unit vector rays that represent each direction that phase can point. + std::array, UINT8_MAX + 1> phase_directions; +}; +} +} + +struct AmplitudeTable final : public LUT +{ + //! Constructor. Creates a 256-entry table + AmplitudeTable(size_t elementSize) noexcept(false) : + LUT(UINT8_MAX + 1 /*i.e., 256*/, elementSize) + { + } + AmplitudeTable() noexcept(false) : AmplitudeTable(sizeof(double)) + { + } + AmplitudeTable(const nitf::LookupTable& lookupTable) noexcept(false) : LUT(lookupTable) + { + if (size() != 256) + { + throw std::invalid_argument("lookupTable should have 256 elements."); + } + } + + AmplitudeTable(const AmplitudeTable&) = delete; // use clone() + AmplitudeTable& operator=(const AmplitudeTable&) = delete; // use clone() + AmplitudeTable(AmplitudeTable&&) = default; + AmplitudeTable& operator=(AmplitudeTable&&) = default; + + size_t size() const noexcept + { + return numEntries; + } + + bool operator==(const AmplitudeTable& rhs) const + { + const LUT* pThis = this; + const LUT* pRHS = &rhs; + return *(pThis) == *(pRHS); + } + bool operator!=(const AmplitudeTable& rhs) const + { + return !(*this == rhs); + } + + const double& index(size_t ii) const noexcept + { + const void* const this_ii = (*this)[ii]; + return *static_cast(this_ii); + } + double& index(size_t ii) noexcept + { + void* const this_ii = (*this)[ii]; + return *static_cast(this_ii); + } + + void clone(std::unique_ptr& ret) const + { + ret = std::make_unique(); + for (size_t ii = 0; ii < numEntries; ++ii) + { + void* const ret_ii = (*ret)[ii]; + *static_cast(ret_ii) = index(ii); + } + + // Don't copy the lookup table; it will be re-created if needed. + } + void clone(std::unique_ptr& ret) const override + { + std::unique_ptr result; + clone(result); + ret.reset(result.release()); + } + AmplitudeTable* clone() const override + { + std::unique_ptr ret; + clone(ret); + return ret.release(); + } + + // This is a "cache" mostly because this is a convenient place to store the data; it + // doesn't take that long to generate the lookup table. Note that existing code wants + // to work with a `const AmplitudeTable &`, thus `mutable` ... . + void cacheLookup_(std::unique_ptr&& lookup) const + { + pLookup = std::move(lookup); + } + const Amp8iPhs8iLookup_t* getLookup() const + { + return pLookup.get(); + } + + // Again, this is a convenient place to store the data as it depends on an AmplitudeTable instance. + void cacheFromComplex_(std::unique_ptr&& fromComplex) const + { + pFromComplex = std::move(fromComplex); + } + const sicd::details::ComplexToAMP8IPHS8I* getFromComplex() const + { + return pFromComplex.get(); + } + +private: + mutable std::unique_ptr pLookup; // to big for the stack + mutable std::unique_ptr pFromComplex; +}; + +} + +#endif // SIX_six_AmplitudeTable_h_INCLUDED_ diff --git a/six/modules/c++/six/include/six/Data.h b/six/modules/c++/six/include/six/Data.h index d22e212db1..5f23fe820e 100644 --- a/six/modules/c++/six/include/six/Data.h +++ b/six/modules/c++/six/include/six/Data.h @@ -80,9 +80,9 @@ struct Data */ virtual PixelType getPixelType() const = 0; virtual void setPixelType(PixelType pixelType) = 0; - virtual bool convertPixels_(std::span, std::span, ptrdiff_t /*cutoff*/) const { return false; } + virtual bool convertPixels_(std::span, std::span) const { return false; } template - bool convertPixels(std::span from, std::span to, ptrdiff_t cutoff = -1) const + bool convertPixels(std::span from, std::span to) const { // coda-oss checks to be sure T and U are trivially_copyable. While this is // correct (converting something else to bytes doesn't make sense), existing @@ -91,14 +91,14 @@ struct Data // TODO: use std::as_bytes() directly const void* const pFrom = from.data(); - auto const pFromBytes = static_cast(pFrom); - const std::span fromBytes(pFromBytes, from.size_bytes()); + auto const pFromBytes = static_cast(pFrom); + const std::span fromBytes(pFromBytes, from.size_bytes()); - void* const pTo = to.data(); - auto const pToBytes = static_cast(pTo); - const std::span toBytes(pToBytes, to.size_bytes()); + void* const pTo = to.data(); + auto const pToBytes = static_cast(pTo); + const std::span toBytes(pToBytes, to.size_bytes()); - return convertPixels_(fromBytes, toBytes, cutoff); + return convertPixels_(fromBytes, toBytes); } /*! diff --git a/six/modules/c++/six/include/six/Types.h b/six/modules/c++/six/include/six/Types.h index 2c8f8b5490..9b83b98414 100644 --- a/six/modules/c++/six/include/six/Types.h +++ b/six/modules/c++/six/include/six/Types.h @@ -19,9 +19,9 @@ * see . * */ -#ifndef __SIX_TYPES_H__ -#define __SIX_TYPES_H__ #pragma once +#ifndef SIX_six_Types_h_INCLUDED_ +#define SIX_six_Types_h_INCLUDED_ #include @@ -29,7 +29,8 @@ #include #include #include -#include +#include +#include #include #include @@ -44,6 +45,7 @@ #include "scene/Types.h" #include "scene/FrameType.h" #include "six/Enums.h" +#include "six/AmplitudeTable.h" namespace six { @@ -289,171 +291,6 @@ struct SCP } }; -/*! - * \struct LUT - * \brief Lookup table - * - * This lookup table object has a number of entries (for pixel ops, - * this is usually 256), and an output space (size) which can be anything - * (e.g., 2 for short) depending on the type that is being housed - * - */ -struct LUT -{ - std::vector table; - size_t numEntries = 0; - size_t elementSize = 0; - - //! Initialize with a number of entries and known output space - LUT(size_t entries, size_t outputSpace) : - table(entries * outputSpace), - numEntries(entries), - elementSize(outputSpace) - { - } - - //! Initialize with an existing LUT, which we copy - LUT(const unsigned char* interleavedLUT, - size_t entries, - size_t outputSpace) : - table(interleavedLUT, interleavedLUT + entries * outputSpace), - numEntries(entries), - elementSize(outputSpace) - { - } - - //! Initialize from nitf::LookupTable read from a NITF - LUT(const nitf::LookupTable& lookupTable) : LUT(lookupTable.getEntries(), lookupTable.getTables()) - { - // NITF stores the tables consecutively. - // Need to interleave them for SIX - if (elementSize == 3) - { - // Imagine the vector is a matrix and then transpose it - for (size_t ii = 0; ii < table.size(); ++ii) - { - table[(ii % numEntries) * elementSize + - (ii / numEntries)] = lookupTable.getTable()[ii]; - } - } - - // I'm not sure why this is a special case, but elements get - // swapped if we try to use the above formula - else if (elementSize == 2) - { - for (size_t ii = 0; ii < numEntries; ++ii) - { - table[2 * ii] = lookupTable.getTable()[numEntries + ii]; - table[2 * ii + 1] = lookupTable.getTable()[ii]; - } - } - } - - virtual ~LUT() = default; - - bool operator==(const LUT& rhs) const - { - return (table == rhs.table && - numEntries == rhs.numEntries && - elementSize == rhs.elementSize); - } - - //! Gives back a pointer at table[i * elementSize] - unsigned char* operator[](size_t i) - { - return &(table[i * elementSize]); - } - - //! Gives back a pointer at table[i * elementSize] - const unsigned char* operator[](size_t i) const - { - return &(table[i * elementSize]); - } - - unsigned char* getTable() - { - return table.empty() ? nullptr : table.data(); - } - - const unsigned char* getTable() const - { - - return table.empty() ? nullptr : table.data(); - } - - virtual LUT* clone() const - { - return std::make_unique(getTable(), numEntries, elementSize).release(); - } -}; - -/*! - * \struct AmplitudeTable - * \brief SICD 'AmpTable' parameter - * - * This is a fixed size (256-element) LUT. For AMP8I_PHS8I data, - * the amplitude and phase parts are stored as unsigned 8-bit integers. - * If an amplitude table is given, the amplitude component should be - * interpreted as an index into the AmpTable, ultimately yielding the - * double precision amplitude value - */ -struct AmplitudeTable final : public LUT -{ - //! Constructor. Creates a 256-entry table - AmplitudeTable(size_t elementSize) noexcept(false) : - LUT(UINT8_MAX + 1 /*i.e., 256*/, elementSize) - { - } - AmplitudeTable() noexcept(false) : AmplitudeTable(sizeof(double)) - { - } - AmplitudeTable(const nitf::LookupTable& lookupTable) noexcept(false) : LUT(lookupTable) - { - if (size() != 256) - { - throw std::invalid_argument("lookupTable should have 256 elements."); - } - } - - size_t size() const - { - return numEntries; - } - - bool operator==(const AmplitudeTable& rhs) const - { - const LUT* pThis = this; - const LUT* pRHS = &rhs; - return *(pThis) == *(pRHS); - } - bool operator!=(const AmplitudeTable& rhs) const - { - return !(*this == rhs); - } - - const double& index(size_t ii) const - { - const void* this_ii = (*this)[ii]; - return *static_cast(this_ii); - } - double& index(size_t ii) - { - void* this_ii = (*this)[ii]; - return *static_cast(this_ii); - } - - AmplitudeTable* clone() const - { - auto ret = std::make_unique(); - for (size_t ii = 0; ii < numEntries; ++ii) - { - void* ret_ii = (*ret)[ii]; - *static_cast(ret_ii) = index(ii); - } - return ret.release(); - } -}; - /*! * \struct Corners * \brief Image corners @@ -578,4 +415,4 @@ ImageMode getImageMode(RadarModeType radarMode); DECLARE_EXCEPTION(MissingRequired); } -#endif +#endif // SIX_six_Types_h_INCLUDED_ diff --git a/six/modules/c++/six/include/six/WriteControl.h b/six/modules/c++/six/include/six/WriteControl.h index e843c3c66b..26f868bddf 100644 --- a/six/modules/c++/six/include/six/WriteControl.h +++ b/six/modules/c++/six/include/six/WriteControl.h @@ -78,14 +78,6 @@ struct WriteControl */ static const char OPT_BUFFER_SIZE[]; - // Control multi-threading for AMP8I_PHS8I conversion in six::sicd::ImageData. - // A negative means no multithreading, 0 will have "the system" guess at - // an appropriate cutoff (a hardcoded value based on testing). Any other - // positive value is the number of pixels to process in each thread; it should - // be fairly large to make-up for the overhead of threading. - static const std::string AMP8I_PHS8I_CUTOFF; - static constexpr ptrdiff_t AMP8I_PHS8I_DEFAULT_CUTOFF = 0; // to_AMP8I_PHS8I() is too slow w/o multi-threading - //! Constructor. Null-sets the Container WriteControl() noexcept(false) : mLogger(mLog, mOwnLog, nullptr) diff --git a/six/modules/c++/six/six.vcxproj b/six/modules/c++/six/six.vcxproj index efa1c1ea30..96c047599c 100644 --- a/six/modules/c++/six/six.vcxproj +++ b/six/modules/c++/six/six.vcxproj @@ -104,6 +104,7 @@ + diff --git a/six/modules/c++/six/six.vcxproj.filters b/six/modules/c++/six/six.vcxproj.filters index fc65f9b6e4..39b8a3b39c 100644 --- a/six/modules/c++/six/six.vcxproj.filters +++ b/six/modules/c++/six/six.vcxproj.filters @@ -150,6 +150,9 @@ Header Files + + Header Files + diff --git a/six/modules/c++/six/source/Adapters.cpp b/six/modules/c++/six/source/Adapters.cpp index 30be34b8e0..642081ebda 100644 --- a/six/modules/c++/six/source/Adapters.cpp +++ b/six/modules/c++/six/source/Adapters.cpp @@ -197,12 +197,11 @@ struct NewMemoryWriteHandler::Impl final // This needs to persist beyhond the constructor std::vector> ampi8i_phs8i; - void convertPixels(NewMemoryWriteHandler& instance, const NITFSegmentInfo& info, std::span> buffer, const Data& data, - ptrdiff_t cutoff = -1) + void convertPixels(NewMemoryWriteHandler& instance, const NITFSegmentInfo& info, std::span> buffer, const Data& data) { ampi8i_phs8i.resize(buffer.size()); const std::span> ampi8i_phs8i_(ampi8i_phs8i.data(), ampi8i_phs8i.size()); - if (!data.convertPixels(buffer, ampi8i_phs8i_, cutoff)) + if (!data.convertPixels(buffer, ampi8i_phs8i_)) { throw std::runtime_error("Unable to convert pixels."); } @@ -246,8 +245,7 @@ inline const std::byte* cast(std::span buffer) } NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, - std::span buffer, size_t firstRow, const Data& data, bool doByteSwap, - ptrdiff_t cutoff) + std::span buffer, size_t firstRow, const Data& data, bool doByteSwap) : NewMemoryWriteHandler(info, cast(buffer), firstRow, data, doByteSwap) { validate_bandSize(buffer, info, data); @@ -261,18 +259,17 @@ NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, const void* pBuffer_ = buffer.data(); const auto pBuffer = static_cast*>(pBuffer_); const std::span> buffer_(pBuffer, buffer.size() / sizeof(std::complex)); - m_pImpl->convertPixels(*this, info, buffer_, data, cutoff); + m_pImpl->convertPixels(*this, info, buffer_, data); } } NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, - std::span> buffer, size_t firstRow, const Data& data, bool doByteSwap, - ptrdiff_t cutoff) + std::span> buffer, size_t firstRow, const Data& data, bool doByteSwap) : NewMemoryWriteHandler(info, cast(buffer), firstRow, data, doByteSwap) { if (data.getPixelType() == six::PixelType::AMP8I_PHS8I) { - m_pImpl->convertPixels(*this, info, buffer, data, cutoff); + m_pImpl->convertPixels(*this, info, buffer, data); } else if (data.getPixelType() != six::PixelType::RE32F_IM32F) { @@ -285,7 +282,7 @@ NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, } NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, - std::span> buffer, size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t) + std::span> buffer, size_t firstRow, const Data& data, bool doByteSwap) : NewMemoryWriteHandler(info, cast(buffer), firstRow, data, doByteSwap) { // This is for the uncommon case where the data is already in this format; normally, it is std::complex. @@ -297,7 +294,7 @@ NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, } NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, - std::span> buffer, size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t) + std::span> buffer, size_t firstRow, const Data& data, bool doByteSwap) : NewMemoryWriteHandler(info, cast(buffer), firstRow, data, doByteSwap) { // Each pixel is stored as a pair of numbers that represent the real and imaginary @@ -310,7 +307,7 @@ NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, validate_buffer(buffer, info, data); } NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, - std::span buffer, size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t) + std::span buffer, size_t firstRow, const Data& data, bool doByteSwap) : NewMemoryWriteHandler(info, cast(buffer), firstRow, data, doByteSwap) { switch (data.getPixelType()) @@ -326,7 +323,7 @@ NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, validate_buffer(buffer, info, data); } NewMemoryWriteHandler::NewMemoryWriteHandler(const NITFSegmentInfo& info, - std::span buffer, size_t firstRow, const Data& data, bool doByteSwap, ptrdiff_t) + std::span buffer, size_t firstRow, const Data& data, bool doByteSwap) : NewMemoryWriteHandler(info, cast(buffer), firstRow, data, doByteSwap) { if (data.getPixelType() != six::PixelType::MONO16I) diff --git a/six/modules/c++/six/source/NITFWriteControl.cpp b/six/modules/c++/six/source/NITFWriteControl.cpp index 89f3fd48a8..b4557d9423 100644 --- a/six/modules/c++/six/source/NITFWriteControl.cpp +++ b/six/modules/c++/six/source/NITFWriteControl.cpp @@ -222,23 +222,20 @@ static auto asBytes(BufferList::value_type pImageData, // this bypasses the normal NITF ImageWriter and streams directly to the output template inline std::shared_ptr makeWriteHandler(const NITFSegmentInfo& segmentInfo, - std::span imageData, const Data& data, bool doByteSwap, - ptrdiff_t cutoff) // for eventual use by to_AMP8I_PHS8I() + std::span imageData, const Data& data, bool doByteSwap) { return std::make_shared(segmentInfo, - imageData, segmentInfo.getFirstRow(), data, doByteSwap, - cutoff); + imageData, segmentInfo.getFirstRow(), data, doByteSwap); } inline std::shared_ptr makeWriteHandler(const NITFSegmentInfo& segmentInfo, - BufferList::value_type pImageData, const Data& data, bool doByteSwap, - ptrdiff_t cutoff) // for eventual use by to_AMP8I_PHS8I() + BufferList::value_type pImageData, const Data& data, bool doByteSwap) { const auto pImageData_ = asBytes(pImageData, segmentInfo, data); - return makeWriteHandler(segmentInfo, pImageData_, data, doByteSwap, cutoff); + return makeWriteHandler(segmentInfo, pImageData_, data, doByteSwap); } inline std::shared_ptr makeWriteHandler(NITFSegmentInfo segmentInfo, -io::InputStream* imageData, const Data& data, bool doByteSwap, ptrdiff_t) +io::InputStream* imageData, const Data& data, bool doByteSwap) { //! TODO: This section of code (unlike the memory section above) // does not account for blocked writing or J2K compression. @@ -248,12 +245,11 @@ return std::make_shared(segmentInfo, imageData, data, doByte template void writeWithoutNitro(nitf::Writer& mWriter, const TImageData& imageData, - const std::vector& imageSegments, size_t startIndex, const Data& data, bool doByteSwap, - ptrdiff_t cutoff) // for eventual use by to_AMP8I_PHS8I() + const std::vector& imageSegments, size_t startIndex, const Data& data, bool doByteSwap) { for (size_t j = 0; j < imageSegments.size(); ++j) { - auto writeHandler = makeWriteHandler(imageSegments[j], imageData, data, doByteSwap, cutoff); + auto writeHandler = makeWriteHandler(imageSegments[j], imageData, data, doByteSwap); mWriter.setImageWriteHandler(static_cast(startIndex + j), writeHandler); } } @@ -273,13 +269,6 @@ bool NITFWriteControl::do_prepareIO(size_t imageDataSize, nitf::IOInterface& out return shouldByteSwap(); } -ptrdiff_t NITFWriteControl::AMP8I_PHS8I_cutoff() const -{ - static const Parameter default_cutoff_parameter(WriteControl::AMP8I_PHS8I_DEFAULT_CUTOFF); - const ptrdiff_t cutoff = getOptions().getParameter(WriteControl::AMP8I_PHS8I_CUTOFF, default_cutoff_parameter); - return cutoff; -} - void NITFWriteControl::save(const SourceList& imageData, nitf::IOInterface& outputFile, const std::vector& schemaPaths) @@ -297,7 +286,7 @@ void NITFWriteControl::save(const SourceList& imageData, const auto startIndex = info.getStartIndex(); const six::Data* const pData = info.getData(); - writeWithoutNitro(mWriter, imageData[i], imageSegments, startIndex, *pData, doByteSwap, AMP8I_PHS8I_cutoff()); + writeWithoutNitro(mWriter, imageData[i], imageSegments, startIndex, *pData, doByteSwap); } addDataAndWrite(schemaPaths); @@ -457,7 +446,7 @@ void NITFWriteControl::write_imageData(const T& imageData, const NITFImageInfo& } else { - writeWithoutNitro(mWriter, imageData, imageSegments, startIndex, *pData, doByteSwap, AMP8I_PHS8I_cutoff()); + writeWithoutNitro(mWriter, imageData, imageSegments, startIndex, *pData, doByteSwap); } if (legend) diff --git a/six/modules/c++/six/source/WriteControl.cpp b/six/modules/c++/six/source/WriteControl.cpp index 99b623ad49..05221b0988 100644 --- a/six/modules/c++/six/source/WriteControl.cpp +++ b/six/modules/c++/six/source/WriteControl.cpp @@ -23,4 +23,4 @@ const char six::WriteControl::OPT_BYTE_SWAP[] = "ByteSwap"; const char six::WriteControl::OPT_BUFFER_SIZE[] = "BufferSize"; -const std::string six::WriteControl::AMP8I_PHS8I_CUTOFF("AMP8I_PHS8I_cutoff"); +