mirror of
https://github.com/Z3Prover/z3
synced 2026-02-09 18:40:51 +00:00
* Initial plan * Add [[nodiscard]] to AST factory functions and modernize iterator loops - Added [[nodiscard]] attribute to key factory functions in ast.h: - All mk_app() variants for creating application nodes - All mk_func_decl() variants for creating function declarations - All mk_const() variants for creating constants - All mk_sort() variants for creating sorts - mk_var() for creating variables - mk_quantifier(), mk_forall(), mk_exists(), mk_lambda() for quantifiers - mk_label(), mk_pattern() and related functions - Converted iterator loops to range-based for loops in: - src/util/region.cpp: pop_scope() - src/util/dec_ref_util.h: dec_ref_key_values(), dec_ref_keys(), dec_ref_values() - src/util/mpf.h: dispose() - src/util/numeral_buffer.h: reset() Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com> * Modernize additional iterator loops to range-based for loops - Converted iterator loops to range-based for loops in: - src/api/api_ast_map.cpp: Z3_ast_map_keys() and Z3_ast_map_to_string() - src/api/c++/z3++.h: optimize copy constructor and add() method - src/opt/wmax.cpp: mk_assumptions() Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com> * Revert changes to z3++.h for C++ version compatibility Revert the range-based for loop changes in src/api/c++/z3++.h to maintain compatibility with older C++ versions that users may rely on. The C++ API wrapper must support down-level C++ standards for backward compatibility. Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com> * Trigger CI build [skip ci] is not used to ensure CI runs --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
60 lines
1 KiB
C++
60 lines
1 KiB
C++
/*++
|
|
Copyright (c) 2011 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
map_util.h
|
|
|
|
Abstract:
|
|
|
|
Some goodies for managing reference counters
|
|
stored in maps.
|
|
|
|
Author:
|
|
|
|
Leonardo (leonardo) 2011-06-07
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
#pragma once
|
|
|
|
/**
|
|
\brief Decrement the reference counter of the keys and values stored in the map,
|
|
then reset the map.
|
|
*/
|
|
template<typename Mng, typename Map>
|
|
void dec_ref_key_values(Mng & m, Map & map) {
|
|
for (auto& kv : map) {
|
|
m.dec_ref(kv.m_key);
|
|
m.dec_ref(kv.m_value);
|
|
}
|
|
map.reset();
|
|
}
|
|
|
|
/**
|
|
\brief Decrement the reference counter of the keys stored in the map,
|
|
then reset the map.
|
|
*/
|
|
template<typename Mng, typename Map>
|
|
void dec_ref_keys(Mng & m, Map & map) {
|
|
for (auto& kv : map) {
|
|
m.dec_ref(kv.m_key);
|
|
}
|
|
map.reset();
|
|
}
|
|
|
|
|
|
/**
|
|
\brief Decrement the reference counter of the values stored in the map,
|
|
then reset the map.
|
|
*/
|
|
template<typename Mng, typename Map>
|
|
void dec_ref_values(Mng & m, Map & map) {
|
|
for (auto& kv : map) {
|
|
m.dec_ref(kv.m_value);
|
|
}
|
|
map.reset();
|
|
}
|
|
|
|
|