Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARROW-17803: [C++] Use [[nodiscard]] #14193

Merged
merged 2 commits into from
Sep 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cpp/src/arrow/array/array_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ class ARROW_EXPORT Array {
private:
ARROW_DISALLOW_COPY_AND_ASSIGN(Array);

ARROW_EXPORT friend void PrintTo(const Array& x, std::ostream* os);
ARROW_FRIEND_EXPORT friend void PrintTo(const Array& x, std::ostream* os);
};

static inline std::ostream& operator<<(std::ostream& os, const Array& x) {
Expand Down
22 changes: 11 additions & 11 deletions cpp/src/arrow/compare.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,54 +92,54 @@ class EqualOptions {
};

/// Returns true if the arrays are exactly equal
bool ARROW_EXPORT ArrayEquals(const Array& left, const Array& right,
ARROW_EXPORT bool ArrayEquals(const Array& left, const Array& right,
const EqualOptions& = EqualOptions::Defaults());

/// Returns true if the arrays are approximately equal. For non-floating point
/// types, this is equivalent to ArrayEquals(left, right)
bool ARROW_EXPORT ArrayApproxEquals(const Array& left, const Array& right,
ARROW_EXPORT bool ArrayApproxEquals(const Array& left, const Array& right,
const EqualOptions& = EqualOptions::Defaults());

/// Returns true if indicated equal-length segment of arrays are exactly equal
bool ARROW_EXPORT ArrayRangeEquals(const Array& left, const Array& right,
ARROW_EXPORT bool ArrayRangeEquals(const Array& left, const Array& right,
int64_t start_idx, int64_t end_idx,
int64_t other_start_idx,
const EqualOptions& = EqualOptions::Defaults());

/// Returns true if indicated equal-length segment of arrays are approximately equal
bool ARROW_EXPORT ArrayRangeApproxEquals(const Array& left, const Array& right,
ARROW_EXPORT bool ArrayRangeApproxEquals(const Array& left, const Array& right,
int64_t start_idx, int64_t end_idx,
int64_t other_start_idx,
const EqualOptions& = EqualOptions::Defaults());

bool ARROW_EXPORT TensorEquals(const Tensor& left, const Tensor& right,
ARROW_EXPORT bool TensorEquals(const Tensor& left, const Tensor& right,
const EqualOptions& = EqualOptions::Defaults());

/// EXPERIMENTAL: Returns true if the given sparse tensors are exactly equal
bool ARROW_EXPORT SparseTensorEquals(const SparseTensor& left, const SparseTensor& right,
ARROW_EXPORT bool SparseTensorEquals(const SparseTensor& left, const SparseTensor& right,
const EqualOptions& = EqualOptions::Defaults());

/// Returns true if the type metadata are exactly equal
/// \param[in] left a DataType
/// \param[in] right a DataType
/// \param[in] check_metadata whether to compare KeyValueMetadata for child
/// fields
bool ARROW_EXPORT TypeEquals(const DataType& left, const DataType& right,
ARROW_EXPORT bool TypeEquals(const DataType& left, const DataType& right,
bool check_metadata = true);

/// Returns true if scalars are equal
/// \param[in] left a Scalar
/// \param[in] right a Scalar
/// \param[in] options comparison options
bool ARROW_EXPORT ScalarEquals(const Scalar& left, const Scalar& right,
ARROW_EXPORT bool ScalarEquals(const Scalar& left, const Scalar& right,
const EqualOptions& options = EqualOptions::Defaults());

/// Returns true if scalars are approximately equal
/// \param[in] left a Scalar
/// \param[in] right a Scalar
/// \param[in] options comparison options
bool ARROW_EXPORT
ScalarApproxEquals(const Scalar& left, const Scalar& right,
const EqualOptions& options = EqualOptions::Defaults());
ARROW_EXPORT bool ScalarApproxEquals(
const Scalar& left, const Scalar& right,
const EqualOptions& options = EqualOptions::Defaults());

} // namespace arrow
4 changes: 2 additions & 2 deletions cpp/src/arrow/compute/exec.h
Original file line number Diff line number Diff line change
Expand Up @@ -246,13 +246,13 @@ struct ARROW_EXPORT ExecBatch {
}

std::string ToString() const;

ARROW_EXPORT friend void PrintTo(const ExecBatch&, std::ostream*);
};

inline bool operator==(const ExecBatch& l, const ExecBatch& r) { return l.Equals(r); }
inline bool operator!=(const ExecBatch& l, const ExecBatch& r) { return !l.Equals(r); }

ARROW_EXPORT void PrintTo(const ExecBatch&, std::ostream*);

struct ExecValue {
ArraySpan array = {};
const Scalar* scalar = NULLPTR;
Expand Down
6 changes: 3 additions & 3 deletions cpp/src/arrow/compute/exec/expression.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,14 +130,14 @@ class ARROW_EXPORT Expression {
using Impl = std::variant<Datum, Parameter, Call>;
std::shared_ptr<Impl> impl_;

ARROW_EXPORT friend bool Identical(const Expression& l, const Expression& r);

ARROW_EXPORT friend void PrintTo(const Expression&, std::ostream*);
ARROW_FRIEND_EXPORT friend bool Identical(const Expression& l, const Expression& r);
};

inline bool operator==(const Expression& l, const Expression& r) { return l.Equals(r); }
inline bool operator!=(const Expression& l, const Expression& r) { return !l.Equals(r); }

ARROW_EXPORT void PrintTo(const Expression&, std::ostream*);

// Factories

ARROW_EXPORT
Expand Down
4 changes: 2 additions & 2 deletions cpp/src/arrow/datum.h
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,10 @@ struct ARROW_EXPORT Datum {
bool operator!=(const Datum& other) const { return !Equals(other); }

std::string ToString() const;

ARROW_EXPORT friend void PrintTo(const Datum&, std::ostream*);
};

ARROW_EXPORT void PrintTo(const Datum&, std::ostream*);

ARROW_EXPORT std::string ToString(Datum::Kind kind);

} // namespace arrow
2 changes: 1 addition & 1 deletion cpp/src/arrow/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ class ARROW_EXPORT CPUMemoryManager : public MemoryManager {
MemoryPool* pool_;

friend std::shared_ptr<MemoryManager> CPUDevice::memory_manager(MemoryPool* pool);
friend ARROW_EXPORT std::shared_ptr<MemoryManager> default_cpu_memory_manager();
ARROW_FRIEND_EXPORT friend std::shared_ptr<MemoryManager> default_cpu_memory_manager();
};

/// \brief Return the default CPU MemoryManager instance
Expand Down
4 changes: 2 additions & 2 deletions cpp/src/arrow/filesystem/mockfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ struct MockDirInfo {
return mtime == other.mtime && full_path == other.full_path;
}

friend ARROW_EXPORT std::ostream& operator<<(std::ostream&, const MockDirInfo&);
ARROW_FRIEND_EXPORT friend std::ostream& operator<<(std::ostream&, const MockDirInfo&);
};

struct MockFileInfo {
Expand All @@ -50,7 +50,7 @@ struct MockFileInfo {
return mtime == other.mtime && full_path == other.full_path && data == other.data;
}

friend ARROW_EXPORT std::ostream& operator<<(std::ostream&, const MockFileInfo&);
ARROW_FRIEND_EXPORT friend std::ostream& operator<<(std::ostream&, const MockFileInfo&);
};

/// A mock FileSystem implementation that holds its contents in memory.
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/arrow/io/hdfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ class ARROW_EXPORT HdfsOutputStream : public OutputStream {
ARROW_DISALLOW_COPY_AND_ASSIGN(HdfsOutputStream);
};

Status ARROW_EXPORT HaveLibHdfs();
ARROW_EXPORT Status HaveLibHdfs();

} // namespace io
} // namespace arrow
2 changes: 1 addition & 1 deletion cpp/src/arrow/io/hdfs_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ struct LibHdfsShim {
};

// TODO(wesm): Remove these exports when we are linking statically
Status ARROW_EXPORT ConnectLibHdfs(LibHdfsShim** driver);
ARROW_EXPORT Status ConnectLibHdfs(LibHdfsShim** driver);

} // namespace internal
} // namespace io
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/arrow/result.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ ARROW_EXPORT void InvalidValueOrDie(const Status& st);
/// arrow::Result<int> CalculateFoo();
/// ```
template <class T>
class ARROW_MUST_USE_TYPE Result : public util::EqualityComparable<Result<T>> {
class [[nodiscard]] Result : public util::EqualityComparable<Result<T>> {
template <typename U>
friend class Result;

Expand Down
4 changes: 2 additions & 2 deletions cpp/src/arrow/scalar.h
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,6 @@ struct ARROW_EXPORT Scalar : public std::enable_shared_from_this<Scalar>,
// TODO(bkietz) add compute::CastOptions
Result<std::shared_ptr<Scalar>> CastTo(std::shared_ptr<DataType> to) const;

ARROW_EXPORT friend void PrintTo(const Scalar& scalar, std::ostream* os);

/// \brief Apply the ScalarVisitor::Visit() method specialized to the scalar type
Status Accept(ScalarVisitor* visitor) const;

Expand All @@ -116,6 +114,8 @@ struct ARROW_EXPORT Scalar : public std::enable_shared_from_this<Scalar>,
: type(std::move(type)), is_valid(is_valid) {}
};

ARROW_EXPORT void PrintTo(const Scalar& scalar, std::ostream* os);

/// \defgroup concrete-scalar-classes Concrete Scalar subclasses
///
/// @{
Expand Down
4 changes: 2 additions & 2 deletions cpp/src/arrow/status.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@ class ARROW_EXPORT StatusDetail {
///
/// Additionally, if an error occurred, a specific error message is generally
/// attached.
class ARROW_MUST_USE_TYPE ARROW_EXPORT Status : public util::EqualityComparable<Status>,
public util::ToStringOstreamable<Status> {
class ARROW_EXPORT [[nodiscard]] Status : public util::EqualityComparable<Status>,
public util::ToStringOstreamable<Status> {
public:
// Create a success status.
Status() noexcept : state_(NULLPTR) {}
Expand Down
12 changes: 6 additions & 6 deletions cpp/src/arrow/type.h
Original file line number Diff line number Diff line change
Expand Up @@ -438,8 +438,6 @@ class ARROW_EXPORT Field : public detail::Fingerprintable,
std::string ComputeFingerprint() const override;
std::string ComputeMetadataFingerprint() const override;

ARROW_EXPORT friend void PrintTo(const Field& field, std::ostream* os);

// Field name
std::string name_;

Expand All @@ -455,6 +453,8 @@ class ARROW_EXPORT Field : public detail::Fingerprintable,
ARROW_DISALLOW_COPY_AND_ASSIGN(Field);
};

ARROW_EXPORT void PrintTo(const Field& field, std::ostream* os);

namespace detail {

template <typename DERIVED, typename BASE, Type::type TYPE_ID, typename C_TYPE>
Expand Down Expand Up @@ -1844,10 +1844,10 @@ class ARROW_EXPORT FieldRef : public util::EqualityComparable<FieldRef> {
void Flatten(std::vector<FieldRef> children);

std::variant<FieldPath, std::string, std::vector<FieldRef>> impl_;

ARROW_EXPORT friend void PrintTo(const FieldRef& ref, std::ostream* os);
};

ARROW_EXPORT void PrintTo(const FieldRef& ref, std::ostream* os);

// ----------------------------------------------------------------------
// Schema

Expand Down Expand Up @@ -1955,12 +1955,12 @@ class ARROW_EXPORT Schema : public detail::Fingerprintable,
std::string ComputeMetadataFingerprint() const override;

private:
ARROW_EXPORT friend void PrintTo(const Schema& s, std::ostream* os);

class Impl;
std::unique_ptr<Impl> impl_;
};

ARROW_EXPORT void PrintTo(const Schema& s, std::ostream* os);

ARROW_EXPORT
std::string EndiannessToString(Endianness endianness);

Expand Down
44 changes: 22 additions & 22 deletions cpp/src/arrow/type_fwd.h
Original file line number Diff line number Diff line change
Expand Up @@ -514,16 +514,16 @@ std::shared_ptr<DataType> fixed_size_list(const std::shared_ptr<DataType>& value
int32_t list_size);
/// \brief Return a Duration instance (naming use _type to avoid namespace conflict with
/// built in time classes).
std::shared_ptr<DataType> ARROW_EXPORT duration(TimeUnit::type unit);
ARROW_EXPORT std::shared_ptr<DataType> duration(TimeUnit::type unit);

/// \brief Return a DayTimeIntervalType instance
std::shared_ptr<DataType> ARROW_EXPORT day_time_interval();
ARROW_EXPORT std::shared_ptr<DataType> day_time_interval();

/// \brief Return a MonthIntervalType instance
std::shared_ptr<DataType> ARROW_EXPORT month_interval();
ARROW_EXPORT std::shared_ptr<DataType> month_interval();

/// \brief Return a MonthDayNanoIntervalType instance
std::shared_ptr<DataType> ARROW_EXPORT month_day_nano_interval();
ARROW_EXPORT std::shared_ptr<DataType> month_day_nano_interval();

/// \brief Create a TimestampType instance from its unit
ARROW_EXPORT
Expand All @@ -536,32 +536,32 @@ std::shared_ptr<DataType> timestamp(TimeUnit::type unit, const std::string& time
/// \brief Create a 32-bit time type instance
///
/// Unit can be either SECOND or MILLI
std::shared_ptr<DataType> ARROW_EXPORT time32(TimeUnit::type unit);
ARROW_EXPORT std::shared_ptr<DataType> time32(TimeUnit::type unit);

/// \brief Create a 64-bit time type instance
///
/// Unit can be either MICRO or NANO
std::shared_ptr<DataType> ARROW_EXPORT time64(TimeUnit::type unit);
ARROW_EXPORT std::shared_ptr<DataType> time64(TimeUnit::type unit);

/// \brief Create a StructType instance
std::shared_ptr<DataType> ARROW_EXPORT
struct_(const std::vector<std::shared_ptr<Field>>& fields);
ARROW_EXPORT std::shared_ptr<DataType> struct_(
const std::vector<std::shared_ptr<Field>>& fields);

/// \brief Create a SparseUnionType instance
std::shared_ptr<DataType> ARROW_EXPORT sparse_union(FieldVector child_fields,
ARROW_EXPORT std::shared_ptr<DataType> sparse_union(FieldVector child_fields,
std::vector<int8_t> type_codes = {});
/// \brief Create a SparseUnionType instance
std::shared_ptr<DataType> ARROW_EXPORT
sparse_union(const ArrayVector& children, std::vector<std::string> field_names = {},
std::vector<int8_t> type_codes = {});
ARROW_EXPORT std::shared_ptr<DataType> sparse_union(
const ArrayVector& children, std::vector<std::string> field_names = {},
std::vector<int8_t> type_codes = {});

/// \brief Create a DenseUnionType instance
std::shared_ptr<DataType> ARROW_EXPORT dense_union(FieldVector child_fields,
ARROW_EXPORT std::shared_ptr<DataType> dense_union(FieldVector child_fields,
std::vector<int8_t> type_codes = {});
/// \brief Create a DenseUnionType instance
std::shared_ptr<DataType> ARROW_EXPORT
dense_union(const ArrayVector& children, std::vector<std::string> field_names = {},
std::vector<int8_t> type_codes = {});
ARROW_EXPORT std::shared_ptr<DataType> dense_union(
const ArrayVector& children, std::vector<std::string> field_names = {},
std::vector<int8_t> type_codes = {});

/// \brief Create a DictionaryType instance
/// \param[in] index_type the type of the dictionary indices (must be
Expand All @@ -587,9 +587,9 @@ std::shared_ptr<DataType> dictionary(const std::shared_ptr<DataType>& index_type
/// \param type the field value type
/// \param nullable whether the values are nullable, default true
/// \param metadata any custom key-value metadata, default null
std::shared_ptr<Field> ARROW_EXPORT
field(std::string name, std::shared_ptr<DataType> type, bool nullable = true,
std::shared_ptr<const KeyValueMetadata> metadata = NULLPTR);
ARROW_EXPORT std::shared_ptr<Field> field(
std::string name, std::shared_ptr<DataType> type, bool nullable = true,
std::shared_ptr<const KeyValueMetadata> metadata = NULLPTR);

/// \brief Create a Field instance with metadata
///
Expand All @@ -598,9 +598,9 @@ field(std::string name, std::shared_ptr<DataType> type, bool nullable = true,
/// \param name the field name
/// \param type the field value type
/// \param metadata any custom key-value metadata
std::shared_ptr<Field> ARROW_EXPORT
field(std::string name, std::shared_ptr<DataType> type,
std::shared_ptr<const KeyValueMetadata> metadata);
ARROW_EXPORT std::shared_ptr<Field> field(
std::string name, std::shared_ptr<DataType> type,
std::shared_ptr<const KeyValueMetadata> metadata);

/// \brief Create a Schema instance
///
Expand Down
Loading