Magne Sjaastad
6c0cc9c363
#14423 Rebuild delta ensemble derived cases declaratively
...
Derived cases were pooled through an m_inUse flag on RimDeltaSummaryCase. Every regeneration marked all cases not in use, which also severed their source references and cleared their caches, then handed them back out one by one and deleted whatever was left over. The flag conflated pool bookkeeping with owning the source references, allSummaryCases() hid the not-in-use cases from the rest of the project, and cases taken from the pool were pushed straight into m_cases without connecting nameChanged, so a renamed source case never propagated to the derived case.
Replace the pooling with desiredSourceCasePairs(), a pure computation of the source case pairs the ensemble should have, and rebuildDerivedCases(), which diffs that against the existing derived cases keyed on the source case pointer pair. Matching cases are reused, missing ones are created, and surplus ones are detached and returned to the caller instead of being deleted in place. Keying on the pointer pair makes the rebuild idempotent, also right after project load where the derived cases arrive from XML with their sources already resolved.
Add the protected RimSummaryEnsemble::addCaseWithoutDependencyUpdate(), used both by addCase() and by the rebuild, so a derived case gets nameChanged connected without triggering the dependent-ensemble notification that the rebuild is already performing itself.
Remove setAllCasesNotInUse(), firstCaseNotInUse(), deleteCasesNoInUse(), RimDeltaSummaryCase::setInUse()/isInUse() and the m_inUse field, and add clearSourceCases() for the one thing setInUse(false) was actually needed for. Old project files keep loading, unknown XML keywords are skipped. The activeOnly parameter of allDerivedCases() is gone and RimDeltaSummaryEnsemble no longer overrides allSummaryCases().
2026-08-14 10:23:34 +02:00
..
2026-08-07 15:05:57 +02:00
2026-08-10 12:38:02 +02:00
2026-05-26 13:10:20 +02:00
2026-08-07 15:05:57 +02:00
2026-08-12 12:22:40 +02:00
2026-08-07 15:05:57 +02:00
2026-08-13 07:22:30 +02:00
2026-08-07 12:21:41 +02:00
2026-08-06 14:10:49 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-05 16:03:42 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-08-13 07:19:18 +02:00
2026-08-10 12:38:02 +02:00
2026-08-12 15:35:06 +02:00
2026-05-26 13:10:20 +02:00
2026-05-26 13:10:20 +02:00
2026-05-26 13:10:20 +02:00
2026-08-07 15:05:57 +02:00
2026-05-26 13:10:20 +02:00
2026-05-26 13:10:20 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-05-26 13:10:20 +02:00
2026-08-14 10:23:34 +02:00
2026-08-07 15:05:57 +02:00
2026-05-26 13:10:20 +02:00
2026-08-07 12:14:03 +02:00
2026-08-12 11:23:32 +02:00
2026-08-07 15:05:57 +02:00
2026-05-26 13:10:20 +02:00
2026-08-07 15:05:57 +02:00
2024-02-05 10:15:36 +01:00
2021-05-25 11:50:18 +02:00
2026-06-17 13:55:32 +02:00
2026-05-08 10:11:09 +02:00
2025-12-08 15:58:05 +01:00
2026-06-17 13:55:32 +02:00
2024-09-19 08:41:57 +02:00
2026-08-07 15:05:57 +02:00
2021-01-11 15:27:45 +01:00
2026-07-27 12:37:59 +02:00
2026-07-27 12:37:59 +02:00
2021-01-11 15:27:45 +01:00
2026-08-07 15:05:57 +02:00
2026-08-04 12:50:34 +02:00
2022-03-04 10:52:17 +01:00
2026-01-12 09:58:55 +01:00
2023-03-09 08:54:28 +01:00
2023-02-26 10:48:40 +01:00
2026-03-31 08:46:52 +02:00
2026-05-08 10:11:09 +02:00
2026-03-31 08:46:52 +02:00
2024-09-13 15:06:32 +02:00
2024-09-13 15:06:32 +02:00
2026-02-25 18:16:03 +01:00
2023-02-26 10:48:40 +01:00
2026-02-13 14:35:52 +01:00
2026-02-13 14:35:52 +01:00
2023-02-26 10:48:40 +01:00
2023-02-26 10:48:40 +01:00
2026-08-13 15:51:46 +02:00
2023-05-11 08:37:58 +02:00
2023-04-14 14:07:45 +02:00
2023-04-14 14:07:45 +02:00
2023-08-23 14:53:53 +02:00
2023-04-14 14:07:45 +02:00
2026-06-10 18:02:07 +02:00
2026-06-10 18:02:07 +02:00
2026-06-10 18:02:07 +02:00
2026-06-10 18:02:07 +02:00
2026-04-20 18:55:36 +02:00
2024-07-25 10:29:16 +02:00
2026-08-07 15:05:57 +02:00
2026-05-28 16:06:39 +02:00
2026-08-07 15:05:57 +02:00
2026-06-15 15:29:33 +02:00
2026-05-11 13:42:13 +02:00
2026-05-11 13:42:13 +02:00
2026-05-11 13:42:13 +02:00
2026-05-11 13:42:13 +02:00
2026-01-27 13:37:37 +01:00
2026-01-27 13:37:37 +01:00
2026-06-08 21:42:19 +02:00
2026-06-08 21:42:19 +02:00
2026-02-18 17:38:45 +01:00
2026-04-08 12:37:36 +02:00
2026-08-07 15:05:57 +02:00
2026-04-20 14:09:25 +02:00
2025-11-28 16:43:51 +01:00
2025-11-28 16:43:51 +01:00
2026-06-26 13:09:05 +02:00
2026-06-24 16:07:21 +02:00
2026-08-07 15:05:57 +02:00
2026-06-08 21:42:19 +02:00
2026-08-07 15:05:57 +02:00
2026-02-13 14:35:52 +01:00
2026-08-07 15:05:57 +02:00
2026-08-05 14:34:38 +02:00
2024-09-24 07:45:10 +02:00
2024-09-24 07:45:10 +02:00
2026-08-07 15:05:57 +02:00
2026-04-20 18:55:36 +02:00
2024-02-05 10:15:36 +01:00
2024-11-04 09:54:23 +01:00
2026-06-23 07:29:21 +02:00
2025-03-14 11:48:32 +01:00
2026-08-07 15:05:57 +02:00
2025-01-14 21:52:54 +01:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-05-11 13:42:13 +02:00
2026-05-11 13:42:13 +02:00
2023-06-06 15:45:54 +02:00
2022-05-29 13:01:27 +02:00
2024-02-05 10:15:36 +01:00
2022-05-19 11:51:52 +02:00
2026-08-07 15:05:57 +02:00
2026-07-27 15:24:25 +02:00
2026-08-07 15:05:57 +02:00
2026-02-20 09:27:20 +01:00
2026-08-07 15:05:57 +02:00
2025-02-26 15:21:12 +01:00
2026-08-07 15:05:57 +02:00
2026-02-13 14:35:52 +01:00
2026-05-11 13:42:13 +02:00
2026-05-11 13:42:13 +02:00
2026-08-07 15:05:57 +02:00
2026-02-13 14:35:52 +01:00
2026-08-07 15:05:57 +02:00
2026-06-08 21:42:19 +02:00
2026-02-13 14:35:52 +01:00
2026-02-13 14:35:52 +01:00
2025-08-27 14:22:11 +02:00
2023-02-26 10:48:40 +01:00
2026-06-19 12:25:55 +02:00
2025-01-14 21:52:54 +01:00
2026-02-12 14:25:48 +01:00
2023-02-26 10:48:40 +01:00
2026-03-31 08:46:52 +02:00
2025-03-14 11:48:32 +01:00
2025-03-14 11:48:32 +01:00
2026-08-10 10:07:32 +02:00
2026-01-27 13:37:37 +01:00
2026-05-08 10:11:09 +02:00
2023-11-08 08:39:04 +01:00
2025-02-10 17:22:25 +01:00
2023-11-10 10:14:59 +01:00
2026-07-27 15:24:25 +02:00
2026-05-11 13:42:13 +02:00
2026-08-07 15:05:57 +02:00
2025-03-14 11:48:32 +01:00
2026-08-07 15:05:57 +02:00
2026-05-20 14:16:04 +02:00
2026-08-13 07:19:18 +02:00
2026-08-13 07:19:18 +02:00
2026-08-10 10:07:32 +02:00
2026-03-03 07:35:48 +01:00
2023-05-12 21:41:34 +02:00
2023-04-14 14:07:45 +02:00
2021-01-11 15:27:45 +01:00
2026-08-07 15:05:57 +02:00
2025-07-30 13:39:02 +02:00
2021-01-11 15:27:45 +01:00
2021-01-11 15:27:45 +01:00
2026-05-08 10:28:00 +02:00
2026-05-08 10:28:00 +02:00
2026-05-08 10:11:09 +02:00
2026-02-16 16:54:22 +01:00
2026-01-08 21:44:58 +01:00
2023-02-10 12:39:13 +01:00
2023-02-26 10:48:40 +01:00
2021-08-13 16:48:33 +02:00
2026-08-13 07:19:18 +02:00
2026-08-13 07:19:18 +02:00
2024-02-05 10:15:36 +01:00
2022-03-04 10:52:17 +01:00
2021-01-11 15:27:45 +01:00
2026-01-19 16:10:14 +01:00
2022-10-12 12:41:08 +02:00
2023-04-14 14:07:45 +02:00
2023-04-14 14:07:45 +02:00
2026-05-13 14:53:00 +02:00
2026-05-13 14:53:00 +02:00
2026-05-08 10:11:09 +02:00
2024-07-25 13:58:31 +02:00
2026-01-19 16:10:14 +01:00
2025-07-16 13:10:47 +02:00
2026-05-13 14:53:00 +02:00
2024-07-05 12:47:54 +02:00
2026-04-20 14:09:25 +02:00
2026-06-17 13:55:32 +02:00
2026-06-17 13:55:32 +02:00
2023-02-26 10:48:40 +01:00
2022-01-17 13:14:21 +01:00
2026-08-13 07:19:18 +02:00
2026-08-13 07:19:18 +02:00
2023-02-26 10:48:40 +01:00
2024-11-04 09:54:23 +01:00
2026-01-08 21:44:58 +01:00
2025-08-27 13:50:36 +02:00
2025-11-19 10:25:32 +01:00
2025-08-27 13:50:36 +02:00
2026-06-17 13:55:32 +02:00
2026-06-17 13:55:32 +02:00
2026-08-07 15:05:57 +02:00
2026-06-24 18:47:04 +02:00
2024-02-22 15:13:29 +01:00
2024-02-22 15:13:29 +01:00
2025-05-30 08:20:43 +02:00
2026-01-19 16:10:14 +01:00
2025-07-16 13:10:47 +02:00
2026-08-07 15:05:57 +02:00
2026-08-07 15:05:57 +02:00
2026-04-29 13:14:49 +02:00
2026-04-29 13:14:49 +02:00
2026-05-11 13:42:13 +02:00
2026-05-11 13:42:13 +02:00
2025-09-18 11:46:57 +02:00
2025-01-02 08:06:50 +01:00
2026-08-10 12:38:21 +02:00
2026-04-20 18:55:36 +02:00
2026-08-07 15:05:57 +02:00
2026-01-05 12:45:32 +01:00
2026-04-20 14:09:25 +02:00
2026-03-31 08:46:52 +02:00
2026-03-31 08:46:52 +02:00
2026-08-07 15:05:57 +02:00
2026-08-06 12:42:54 +02:00
2026-03-03 07:35:48 +01:00
2026-08-05 14:34:38 +02:00
2026-01-20 14:12:27 +01:00
2026-01-20 14:12:27 +01:00
2026-01-27 13:37:37 +01:00
2023-06-05 09:07:14 +02:00
2026-08-07 15:05:57 +02:00
2026-06-24 18:47:04 +02:00
2026-06-19 12:25:55 +02:00
2026-01-20 14:12:27 +01:00
2026-03-31 08:46:52 +02:00
2026-03-31 08:46:52 +02:00
2026-05-28 07:44:18 +02:00
2026-05-27 09:37:42 +02:00
2026-06-01 08:19:44 +02:00
2026-05-28 07:44:18 +02:00
2026-08-07 15:05:57 +02:00
2025-11-28 16:43:51 +01:00
2023-10-20 15:43:18 +02:00
2023-10-20 15:43:18 +02:00
2024-02-05 10:15:36 +01:00
2024-11-04 09:54:23 +01:00
2024-03-07 19:45:43 +01:00
2024-11-04 09:54:23 +01:00
2026-05-08 10:11:09 +02:00
2026-02-18 17:38:45 +01:00
2025-11-19 14:30:13 +01:00
2024-03-18 11:46:43 +01:00
2026-01-21 19:11:41 +01:00
2022-05-09 15:36:27 +02:00
2026-08-10 12:38:02 +02:00
2026-08-10 12:38:02 +02:00
2023-05-12 21:41:34 +02:00
2023-02-26 10:48:40 +01:00
2026-08-10 12:38:02 +02:00
2026-08-10 12:38:02 +02:00
2026-04-20 14:09:25 +02:00
2026-04-20 14:09:25 +02:00
2026-01-08 21:44:58 +01:00
2023-02-26 10:48:40 +01:00
2026-01-27 13:37:37 +01:00
2026-01-27 13:37:37 +01:00
2026-03-31 09:16:52 +02:00
2026-03-31 09:16:52 +02:00
2026-06-17 13:55:32 +02:00
2026-03-18 13:41:27 +01:00
2026-05-08 10:11:09 +02:00
2026-01-27 13:37:37 +01:00
2026-08-07 15:05:57 +02:00
2023-11-28 11:42:21 +01:00
2026-01-19 16:10:14 +01:00
2022-05-09 15:36:27 +02:00
2026-06-24 11:21:13 +02:00
2026-01-23 13:31:47 +01:00
2026-08-07 15:05:57 +02:00
2026-01-23 13:31:47 +01:00
2024-02-05 10:15:36 +01:00
2023-04-14 14:07:45 +02:00
2023-06-26 13:12:41 +02:00
2023-02-26 10:48:40 +01:00
2021-11-14 15:26:09 +01:00
2021-01-11 15:27:45 +01:00
2026-06-24 16:07:21 +02:00
2026-06-24 16:07:21 +02:00
2024-02-05 10:15:36 +01:00
2023-02-26 10:48:40 +01:00
2025-01-10 18:25:46 +01:00
2024-10-31 15:08:59 +01:00
2024-02-05 10:15:36 +01:00
2024-11-04 09:54:23 +01:00
2021-01-11 15:27:45 +01:00
2021-01-11 15:27:45 +01:00
2026-08-07 15:05:57 +02:00
2026-01-27 13:37:37 +01:00