@@ -502,11 +502,8 @@ class NonTrivialMutableListValueImpl final : public MutableListValue {
502502
503503class TrivialListValueBuilderImpl final : public ListValueBuilder {
504504 public:
505- TrivialListValueBuilderImpl (ValueFactory& value_factory,
506- absl::Nonnull<google::protobuf::Arena*> arena)
507- : value_factory_(value_factory), elements_(arena) {
508- ABSL_DCHECK_EQ (value_factory_.GetMemoryManager ().arena (), arena);
509- }
505+ explicit TrivialListValueBuilderImpl (absl::Nonnull<google::protobuf::Arena*> arena)
506+ : arena_(arena), elements_(arena_) {}
510507
511508 absl::Status Add (Value value) override {
512509 CEL_RETURN_IF_ERROR (CheckListElement (value));
@@ -524,19 +521,18 @@ class TrivialListValueBuilderImpl final : public ListValueBuilder {
524521 return ListValue ();
525522 }
526523 return ParsedListValue (
527- value_factory_. GetMemoryManager ( ).MakeShared <TrivialListValueImpl>(
524+ MemoryManager::Pooling (arena_ ).MakeShared <TrivialListValueImpl>(
528525 std::move (elements_)));
529526 }
530527
531528 private:
532- ValueFactory& value_factory_ ;
529+ absl::Nonnull<google::protobuf::Arena*> const arena_ ;
533530 TrivialValueVector elements_;
534531};
535532
536533class NonTrivialListValueBuilderImpl final : public ListValueBuilder {
537534 public:
538- explicit NonTrivialListValueBuilderImpl (ValueFactory& value_factory)
539- : value_factory_(value_factory) {}
535+ NonTrivialListValueBuilderImpl () = default ;
540536
541537 absl::Status Add (Value value) override {
542538 CEL_RETURN_IF_ERROR (CheckListElement (value));
@@ -553,12 +549,11 @@ class NonTrivialListValueBuilderImpl final : public ListValueBuilder {
553549 return ListValue ();
554550 }
555551 return ParsedListValue (
556- value_factory_. GetMemoryManager ().MakeShared <NonTrivialListValueImpl>(
552+ MemoryManager::ReferenceCounting ().MakeShared <NonTrivialListValueImpl>(
557553 std::move (elements_)));
558554 }
559555
560556 private:
561- ValueFactory& value_factory_;
562557 NonTrivialValueVector elements_;
563558};
564559
@@ -676,13 +671,17 @@ const MutableListValue& GetMutableListValue(const ListValue& value) {
676671}
677672
678673absl::Nonnull<cel::ListValueBuilderPtr> NewListValueBuilder (
679- ValueFactory& value_factory) {
680- if (absl::Nullable<google::protobuf::Arena*> arena =
681- value_factory.GetMemoryManager ().arena ();
674+ Allocator<> allocator) {
675+ if (absl::Nullable<google::protobuf::Arena*> arena = allocator.arena ();
682676 arena != nullptr ) {
683- return std::make_unique<TrivialListValueBuilderImpl>(value_factory, arena);
677+ return std::make_unique<TrivialListValueBuilderImpl>(arena);
684678 }
685- return std::make_unique<NonTrivialListValueBuilderImpl>(value_factory);
679+ return std::make_unique<NonTrivialListValueBuilderImpl>();
680+ }
681+
682+ absl::Nonnull<cel::ListValueBuilderPtr> NewListValueBuilder (
683+ ValueFactory& value_factory) {
684+ return NewListValueBuilder (value_factory.GetMemoryManager ());
686685}
687686
688687} // namespace common_internal
@@ -1451,11 +1450,8 @@ class NonTrivialMutableMapValueImpl final : public MutableMapValue {
14511450
14521451class TrivialMapValueBuilderImpl final : public MapValueBuilder {
14531452 public:
1454- TrivialMapValueBuilderImpl (ValueFactory& value_factory,
1455- absl::Nonnull<google::protobuf::Arena*> arena)
1456- : value_factory_(value_factory), map_(arena) {
1457- ABSL_DCHECK_EQ (value_factory_.GetMemoryManager ().arena (), arena);
1458- }
1453+ explicit TrivialMapValueBuilderImpl (absl::Nonnull<google::protobuf::Arena*> arena)
1454+ : arena_(arena), map_(arena_) {}
14591455
14601456 absl::Status Put (Value key, Value value) override {
14611457 CEL_RETURN_IF_ERROR (CheckMapKey (key));
@@ -1480,20 +1476,18 @@ class TrivialMapValueBuilderImpl final : public MapValueBuilder {
14801476 return MapValue ();
14811477 }
14821478 return ParsedMapValue (
1483- value_factory_. GetMemoryManager ( ).MakeShared <TrivialMapValueImpl>(
1479+ MemoryManager::Pooling (arena_ ).MakeShared <TrivialMapValueImpl>(
14841480 std::move (map_)));
14851481 }
14861482
14871483 private:
1488- ValueFactory& value_factory_ ;
1484+ absl::Nonnull<google::protobuf::Arena*> const arena_ ;
14891485 TrivialValueFlatHashMap map_;
14901486};
14911487
14921488class NonTrivialMapValueBuilderImpl final : public MapValueBuilder {
14931489 public:
1494- explicit NonTrivialMapValueBuilderImpl (ValueFactory& value_factory)
1495- : value_factory_(value_factory),
1496- map_(NonTrivialValueFlatHashMapAllocator{}) {}
1490+ NonTrivialMapValueBuilderImpl () = default ;
14971491
14981492 absl::Status Put (Value key, Value value) override {
14991493 CEL_RETURN_IF_ERROR (CheckMapKey (key));
@@ -1517,12 +1511,11 @@ class NonTrivialMapValueBuilderImpl final : public MapValueBuilder {
15171511 return MapValue ();
15181512 }
15191513 return ParsedMapValue (
1520- value_factory_. GetMemoryManager ().MakeShared <NonTrivialMapValueImpl>(
1514+ MemoryManager::ReferenceCounting ().MakeShared <NonTrivialMapValueImpl>(
15211515 std::move (map_)));
15221516 }
15231517
15241518 private:
1525- ValueFactory& value_factory_;
15261519 NonTrivialValueFlatHashMap map_;
15271520};
15281521
@@ -1644,13 +1637,17 @@ const MutableMapValue& GetMutableMapValue(const MapValue& value) {
16441637}
16451638
16461639absl::Nonnull<cel::MapValueBuilderPtr> NewMapValueBuilder (
1647- ValueFactory& value_factory) {
1648- if (absl::Nullable<google::protobuf::Arena*> arena =
1649- value_factory.GetMemoryManager ().arena ();
1640+ Allocator<> allocator) {
1641+ if (absl::Nullable<google::protobuf::Arena*> arena = allocator.arena ();
16501642 arena != nullptr ) {
1651- return std::make_unique<TrivialMapValueBuilderImpl>(value_factory, arena);
1643+ return std::make_unique<TrivialMapValueBuilderImpl>(arena);
16521644 }
1653- return std::make_unique<NonTrivialMapValueBuilderImpl>(value_factory);
1645+ return std::make_unique<NonTrivialMapValueBuilderImpl>();
1646+ }
1647+
1648+ absl::Nonnull<cel::MapValueBuilderPtr> NewMapValueBuilder (
1649+ ValueFactory& value_factory) {
1650+ return NewMapValueBuilder (value_factory.GetMemoryManager ());
16541651}
16551652
16561653} // namespace common_internal
0 commit comments