This is an automated email from the ASF dual-hosted git repository.
mgrigorov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/avro.git
The following commit(s) were added to refs/heads/main by this push:
new 0fd1e7834 AVRO-4097: Replace boost::any with std::any; boost::tuple
with std::tuple (#3256)
0fd1e7834 is described below
commit 0fd1e7834996c435883ec0bcf8237e79415a6426
Author: Mikhail Koviazin <[email protected]>
AuthorDate: Fri Dec 6 14:52:56 2024 +0100
AVRO-4097: Replace boost::any with std::any; boost::tuple with std::tuple
(#3256)
* AVRO-4097: [C++] replace boost::any with std::any
Signed-off-by: Mikhail Koviazin <[email protected]>
* AVRO-4097: [C++] replace boost::tuple with std::tuple
Signed-off-by: Mikhail Koviazin <[email protected]>
---------
Signed-off-by: Mikhail Koviazin <[email protected]>
---
lang/c++/impl/json/JsonDom.cc | 4 +--
lang/c++/impl/json/JsonDom.hh | 14 +++++------
lang/c++/impl/parsing/Symbol.hh | 55 ++++++++++++++++++++---------------------
3 files changed, 36 insertions(+), 37 deletions(-)
diff --git a/lang/c++/impl/json/JsonDom.cc b/lang/c++/impl/json/JsonDom.cc
index c2696d827..b36abad11 100644
--- a/lang/c++/impl/json/JsonDom.cc
+++ b/lang/c++/impl/json/JsonDom.cc
@@ -145,12 +145,12 @@ void Entity::ensureType(EntityType type) const {
String Entity::stringValue() const {
ensureType(EntityType::String);
- return
JsonParser::toStringValue(**boost::any_cast<std::shared_ptr<String>>(&value_));
+ return
JsonParser::toStringValue(**std::any_cast<std::shared_ptr<String>>(&value_));
}
String Entity::bytesValue() const {
ensureType(EntityType::String);
- return
JsonParser::toBytesValue(**boost::any_cast<std::shared_ptr<String>>(&value_));
+ return
JsonParser::toBytesValue(**std::any_cast<std::shared_ptr<String>>(&value_));
}
std::string Entity::toString() const {
diff --git a/lang/c++/impl/json/JsonDom.hh b/lang/c++/impl/json/JsonDom.hh
index 2a0695adf..8aa180972 100644
--- a/lang/c++/impl/json/JsonDom.hh
+++ b/lang/c++/impl/json/JsonDom.hh
@@ -19,6 +19,7 @@
#ifndef avro_json_JsonDom_hh__
#define avro_json_JsonDom_hh__
+#include <any>
#include <cstdint>
#include <iostream>
#include <map>
@@ -27,7 +28,6 @@
#include <vector>
#include "Config.hh"
-#include "boost/any.hpp"
namespace avro {
@@ -67,7 +67,7 @@ inline std::ostream &operator<<(std::ostream &os, EntityType
et) {
class AVRO_DECL Entity {
EntityType type_;
- boost::any value_;
+ std::any value_;
size_t line_; // can't be const else noncopyable...
void ensureType(EntityType) const;
@@ -99,17 +99,17 @@ public:
Bool boolValue() const {
ensureType(EntityType::Bool);
- return boost::any_cast<Bool>(value_);
+ return std::any_cast<Bool>(value_);
}
Long longValue() const {
ensureType(EntityType::Long);
- return boost::any_cast<Long>(value_);
+ return std::any_cast<Long>(value_);
}
Double doubleValue() const {
ensureType(EntityType::Double);
- return boost::any_cast<Double>(value_);
+ return std::any_cast<Double>(value_);
}
String stringValue() const;
@@ -118,12 +118,12 @@ public:
const Array &arrayValue() const {
ensureType(EntityType::Arr);
- return **boost::any_cast<std::shared_ptr<Array>>(&value_);
+ return **std::any_cast<std::shared_ptr<Array>>(&value_);
}
const Object &objectValue() const {
ensureType(EntityType::Obj);
- return **boost::any_cast<std::shared_ptr<Object>>(&value_);
+ return **std::any_cast<std::shared_ptr<Object>>(&value_);
}
std::string toString() const;
diff --git a/lang/c++/impl/parsing/Symbol.hh b/lang/c++/impl/parsing/Symbol.hh
index bbba58e6a..08b972400 100644
--- a/lang/c++/impl/parsing/Symbol.hh
+++ b/lang/c++/impl/parsing/Symbol.hh
@@ -20,16 +20,15 @@
#define avro_parsing_Symbol_hh__
#include <algorithm>
+#include <any>
#include <map>
#include <set>
#include <sstream>
#include <stack>
+#include <tuple>
#include <utility>
#include <vector>
-#include <boost/any.hpp>
-#include <boost/tuple/tuple.hpp>
-
#include "Decoder.hh"
#include "Exception.hh"
#include "Node.hh"
@@ -39,10 +38,10 @@ namespace parsing {
class Symbol;
-typedef std::vector<Symbol> Production;
-typedef std::shared_ptr<Production> ProductionPtr;
-typedef boost::tuple<std::stack<ssize_t>, bool, ProductionPtr, ProductionPtr>
RepeaterInfo;
-typedef boost::tuple<ProductionPtr, ProductionPtr> RootInfo;
+using Production = std::vector<Symbol>;
+using ProductionPtr = std::shared_ptr<Production>;
+using RepeaterInfo = std::tuple<std::stack<ssize_t>, bool, ProductionPtr,
ProductionPtr>;
+using RootInfo = std::tuple<ProductionPtr, ProductionPtr>;
class Symbol {
public:
@@ -92,7 +91,7 @@ public:
private:
Kind kind_;
- boost::any extra_;
+ std::any extra_;
explicit Symbol(Kind k) : kind_(k) {}
template<typename T>
@@ -105,17 +104,17 @@ public:
template<typename T>
T extra() const {
- return boost::any_cast<T>(extra_);
+ return std::any_cast<T>(extra_);
}
template<typename T>
T *extrap() {
- return boost::any_cast<T>(&extra_);
+ return std::any_cast<T>(&extra_);
}
template<typename T>
const T *extrap() const {
- return boost::any_cast<T>(&extra_);
+ return std::any_cast<T>(&extra_);
}
template<typename T>
@@ -340,8 +339,8 @@ void fixup(Symbol &s, const std::map<T, ProductionPtr> &m,
} break;
case Symbol::Kind::Repeater: {
const RepeaterInfo &ri = *s.extrap<RepeaterInfo>();
- fixup_internal(boost::tuples::get<2>(ri), m, seen);
- fixup_internal(boost::tuples::get<3>(ri), m, seen);
+ fixup_internal(std::get<2>(ri), m, seen);
+ fixup_internal(std::get<3>(ri), m, seen);
} break;
case Symbol::Kind::Placeholder: {
typename std::map<T, std::shared_ptr<Production>>::const_iterator
it =
@@ -419,7 +418,7 @@ public:
} else {
switch (s.kind()) {
case Symbol::Kind::Root:
- append(boost::tuples::get<0>(*s.extrap<RootInfo>()));
+ append(std::get<0>(*s.extrap<RootInfo>()));
continue;
case Symbol::Kind::Indirect: {
ProductionPtr pp =
@@ -437,7 +436,7 @@ public:
continue;
case Symbol::Kind::Repeater: {
auto *p = s.extrap<RepeaterInfo>();
- std::stack<ssize_t> &ns = boost::tuples::get<0>(*p);
+ std::stack<ssize_t> &ns = std::get<0>(*p);
if (ns.empty()) {
throw Exception(
"Empty item count stack in repeater advance");
@@ -447,7 +446,7 @@ public:
"Zero item count in repeater advance");
}
--ns.top();
- append(boost::tuples::get<2>(*p));
+ append(std::get<2>(*p));
}
continue;
case Symbol::Kind::Error:
@@ -527,7 +526,7 @@ public:
}
Symbol &t2 = parsingStack.top();
auto *p = t2.extrap<RepeaterInfo>();
- boost::tuples::get<0>(*p).push(n);
+ std::get<0>(*p).push(n);
continue;
}
case Symbol::Kind::ArrayEnd:
@@ -542,7 +541,7 @@ public:
}
Symbol &t2 = parsingStack.top();
auto *p2 = t2.extrap<RepeaterInfo>();
- boost::tuples::get<0>(*p2).push(n);
+ std::get<0>(*p2).push(n);
continue;
}
case Symbol::Kind::MapEnd:
@@ -564,19 +563,19 @@ public:
}
case Symbol::Kind::Repeater: {
auto *p = t.extrap<RepeaterInfo>();
- std::stack<ssize_t> &ns = boost::tuples::get<0>(*p);
+ std::stack<ssize_t> &ns = std::get<0>(*p);
if (ns.empty()) {
throw Exception(
"Empty item count stack in repeater skip");
}
ssize_t &n = ns.top();
if (n == 0) {
- n = boost::tuples::get<1>(*p) ? d.arrayNext()
- : d.mapNext();
+ n = std::get<1>(*p) ? d.arrayNext()
+ : d.mapNext();
}
if (n != 0) {
--n;
- append(boost::tuples::get<3>(*p));
+ append(std::get<3>(*p));
continue;
} else {
ns.pop();
@@ -680,7 +679,7 @@ public:
Symbol &s = parsingStack.top();
assertMatch(Symbol::Kind::Repeater, s.kind());
auto *p = s.extrap<RepeaterInfo>();
- std::stack<ssize_t> &nn = boost::tuples::get<0>(*p);
+ std::stack<ssize_t> &nn = std::get<0>(*p);
nn.push(n);
}
@@ -689,7 +688,7 @@ public:
Symbol &s = parsingStack.top();
assertMatch(Symbol::Kind::Repeater, s.kind());
auto *p = s.extrap<RepeaterInfo>();
- std::stack<ssize_t> &nn = boost::tuples::get<0>(*p);
+ std::stack<ssize_t> &nn = std::get<0>(*p);
if (nn.empty() || nn.top() != 0) {
throw Exception("Wrong number of items");
}
@@ -701,7 +700,7 @@ public:
Symbol &s = parsingStack.top();
assertMatch(Symbol::Kind::Repeater, s.kind());
auto *p = s.extrap<RepeaterInfo>();
- std::stack<ssize_t> &ns = boost::tuples::get<0>(*p);
+ std::stack<ssize_t> &ns = std::get<0>(*p);
if (ns.empty()) {
throw Exception("Incorrect number of items (empty)");
}
@@ -770,7 +769,7 @@ public:
parsingStack.pop();
}
Symbol &s = parsingStack.top();
- append(boost::tuples::get<0>(*s.extrap<RootInfo>()));
+ append(std::get<0>(*s.extrap<RootInfo>()));
}
};
@@ -790,8 +789,8 @@ inline std::ostream &operator<<(std::ostream &os, const
Symbol &s) {
case Symbol::Kind::Repeater: {
const RepeaterInfo &ri = *s.extrap<RepeaterInfo>();
os << '(' << Symbol::toString(s.kind())
- << ' ' << *boost::tuples::get<2>(ri)
- << ' ' << *boost::tuples::get<3>(ri)
+ << ' ' << *std::get<2>(ri)
+ << ' ' << *std::get<3>(ri)
<< ')';
} break;
case Symbol::Kind::Indirect: {