|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
|
#include <stdexcept> |
|
#include <string> |
|
|
|
#include "arrow/extension_type.h" |
|
#include "arrow/result.h" |
|
#include "arrow/type_fwd.h" |
|
#include "arrow/util/visibility.h" |
|
|
|
namespace arrow::extension { |
|
|
|
|
|
class ARROW_EXPORT JsonExtensionType : public ExtensionType { |
|
public: |
|
explicit JsonExtensionType(const std::shared_ptr<DataType>& storage_type) |
|
: ExtensionType(storage_type), storage_type_(storage_type) {} |
|
|
|
std::string extension_name() const override { return "arrow.json"; } |
|
|
|
bool ExtensionEquals(const ExtensionType& other) const override; |
|
|
|
Result<std::shared_ptr<DataType>> Deserialize( |
|
std::shared_ptr<DataType> storage_type, |
|
const std::string& serialized_data) const override; |
|
|
|
std::string Serialize() const override; |
|
|
|
std::shared_ptr<Array> MakeArray(std::shared_ptr<ArrayData> data) const override; |
|
|
|
static Result<std::shared_ptr<DataType>> Make(std::shared_ptr<DataType> storage_type); |
|
|
|
static bool IsSupportedStorageType(Type::type type_id); |
|
|
|
private: |
|
std::shared_ptr<DataType> storage_type_; |
|
}; |
|
|
|
|
|
ARROW_EXPORT std::shared_ptr<DataType> json( |
|
std::shared_ptr<DataType> storage_type = utf8()); |
|
|
|
} |
|
|