File indexing completed on 2025-08-28 08:26:56
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #pragma once
0022
0023 #include "arrow/compute/type_fwd.h"
0024 #include "arrow/result.h"
0025 #include "arrow/status.h"
0026 #include "arrow/type_fwd.h"
0027 #include "arrow/util/visibility.h"
0028
0029 namespace arrow {
0030 namespace compute {
0031
0032
0033
0034
0035
0036
0037 class ARROW_EXPORT FunctionOptionsType {
0038 public:
0039 virtual ~FunctionOptionsType() = default;
0040
0041 virtual const char* type_name() const = 0;
0042 virtual std::string Stringify(const FunctionOptions&) const = 0;
0043 virtual bool Compare(const FunctionOptions&, const FunctionOptions&) const = 0;
0044 virtual Result<std::shared_ptr<Buffer>> Serialize(const FunctionOptions&) const;
0045 virtual Result<std::unique_ptr<FunctionOptions>> Deserialize(
0046 const Buffer& buffer) const;
0047 virtual std::unique_ptr<FunctionOptions> Copy(const FunctionOptions&) const = 0;
0048 };
0049
0050
0051
0052 class ARROW_EXPORT FunctionOptions : public util::EqualityComparable<FunctionOptions> {
0053 public:
0054 virtual ~FunctionOptions() = default;
0055
0056 const FunctionOptionsType* options_type() const { return options_type_; }
0057 const char* type_name() const { return options_type()->type_name(); }
0058
0059 bool Equals(const FunctionOptions& other) const;
0060 std::string ToString() const;
0061 std::unique_ptr<FunctionOptions> Copy() const;
0062
0063 Result<std::shared_ptr<Buffer>> Serialize() const;
0064
0065
0066
0067
0068 static Result<std::unique_ptr<FunctionOptions>> Deserialize(
0069 const std::string& type_name, const Buffer& buffer);
0070
0071 protected:
0072 explicit FunctionOptions(const FunctionOptionsType* type) : options_type_(type) {}
0073 const FunctionOptionsType* options_type_;
0074 };
0075
0076 ARROW_EXPORT void PrintTo(const FunctionOptions&, std::ostream*);
0077
0078
0079
0080 }
0081 }