[
https://issues.apache.org/jira/browse/ARROW-229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16146829#comment-16146829
]
Uwe L. Korn commented on ARROW-229:
-----------------------------------
I'm happy with the proposed interface but I would also like to see
{code}
Status SafeCast(const Array& input, const std::shared_ptr<DataType>&
target_type,
MemoryPool* pool,
std::shared_ptr<Array>* out);
template <typename SourceType, typename TargetType>
Status TypedSafeCast(const TypedArray<ArrowType>& input, MemoryPool* pool,
std::shared_ptr<Array>* out);
{code}
Where we have e.g. {{TypedArray<Int64Type> = NumericArray<Int64Type>}}. This
would enable typed C++ code to directly pass along its type information. I
would expect an implementation of {{SafeCast}} to actually just call
{{TypedSafeCast}}.
> [C++] Implement safe casts for primitive types
> ----------------------------------------------
>
> Key: ARROW-229
> URL: https://issues.apache.org/jira/browse/ARROW-229
> Project: Apache Arrow
> Issue Type: New Feature
> Components: C++
> Reporter: Uwe L. Korn
> Assignee: Wes McKinney
> Fix For: 0.7.0
>
>
> In some situations, you want to cast the data in a PrimitiveArray to a
> different (but similar) data type, e.g. from {{uint32_t}} to {{int32_t}} or
> {{uint32_t}} to {{uint8_t}}. This can either be done by reinterpreting the
> data or needs to involve a copy if the size of the underlying type changes.
> There is already an implementation for this in {{parquet-cpp}} that could be
> pulled out into Arrow:
> https://github.com/apache/parquet-cpp/blob/9a0407e684c0a6299d0e6ab98c11c1162915c0ee/src/parquet/arrow/writer.cc#L71
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)