From 28598a211168f5f740fcb35bf84e4e336b86bb32 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Fri, 4 Apr 2025 17:05:22 +0200 Subject: [PATCH] use arena in flatzinc --- ortools/flatzinc/cp_model_fz_solver.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ortools/flatzinc/cp_model_fz_solver.cc b/ortools/flatzinc/cp_model_fz_solver.cc index 93f322c051..874cf5c788 100644 --- a/ortools/flatzinc/cp_model_fz_solver.cc +++ b/ortools/flatzinc/cp_model_fz_solver.cc @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -30,6 +31,7 @@ #include "absl/strings/match.h" #include "absl/strings/str_cat.h" #include "absl/types/span.h" +#include "google/protobuf/arena.h" #include "google/protobuf/text_format.h" #include "ortools/base/iterator_adaptors.h" #include "ortools/flatzinc/checker.h" @@ -64,6 +66,10 @@ int FalseLiteral(int var) { return -var - 1; } // Helper class to convert a flatzinc model to a CpModelProto. struct CpModelProtoWithMapping { + CpModelProtoWithMapping() + : arena(std::make_unique()), + proto(*google::protobuf::Arena::Create(arena.get())) {} + // Returns a constant CpModelProto variable created on-demand. int LookupConstant(int64_t value); @@ -135,7 +141,8 @@ struct CpModelProtoWithMapping { SolverLogger* logger); // The output proto. - CpModelProto proto; + std::unique_ptr arena; + CpModelProto& proto; SatParameters parameters; // Mapping from flatzinc variables to CpModelProto variables.