Skip to content

Commit 28598a2

Browse files
committed
use arena in flatzinc
1 parent bef3002 commit 28598a2

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

ortools/flatzinc/cp_model_fz_solver.cc

+8-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <cstdint>
1818
#include <functional>
1919
#include <limits>
20+
#include <memory>
2021
#include <string>
2122
#include <tuple>
2223
#include <utility>
@@ -30,6 +31,7 @@
3031
#include "absl/strings/match.h"
3132
#include "absl/strings/str_cat.h"
3233
#include "absl/types/span.h"
34+
#include "google/protobuf/arena.h"
3335
#include "google/protobuf/text_format.h"
3436
#include "ortools/base/iterator_adaptors.h"
3537
#include "ortools/flatzinc/checker.h"
@@ -64,6 +66,10 @@ int FalseLiteral(int var) { return -var - 1; }
6466

6567
// Helper class to convert a flatzinc model to a CpModelProto.
6668
struct CpModelProtoWithMapping {
69+
CpModelProtoWithMapping()
70+
: arena(std::make_unique<google::protobuf::Arena>()),
71+
proto(*google::protobuf::Arena::Create<CpModelProto>(arena.get())) {}
72+
6773
// Returns a constant CpModelProto variable created on-demand.
6874
int LookupConstant(int64_t value);
6975

@@ -135,7 +141,8 @@ struct CpModelProtoWithMapping {
135141
SolverLogger* logger);
136142

137143
// The output proto.
138-
CpModelProto proto;
144+
std::unique_ptr<google::protobuf::Arena> arena;
145+
CpModelProto& proto;
139146
SatParameters parameters;
140147

141148
// Mapping from flatzinc variables to CpModelProto variables.

0 commit comments

Comments
 (0)