| 57 | |
| 58 | template <typename ValidVisitor, typename NullVisitor> |
| 59 | Status VisitDictionaryEntries(const DictionaryArray& dict_array, |
| 60 | ValidVisitor&& visit_valid, NullVisitor&& visit_null) { |
| 61 | const StringArray& dict = checked_cast<const StringArray&>(*dict_array.dictionary()); |
| 62 | const Int32Array& indices = checked_cast<const Int32Array&>(*dict_array.indices()); |
| 63 | for (int64_t i = 0; i < indices.length(); ++i) { |
| 64 | if (indices.IsValid(i)) { |
| 65 | RETURN_NOT_OK(visit_valid(dict.GetView(indices.GetView(i)))); |
| 66 | } else { |
| 67 | RETURN_NOT_OK(visit_null()); |
| 68 | } |
| 69 | } |
| 70 | return Status::OK(); |
| 71 | } |
| 72 | |
| 73 | } // namespace |
| 74 | |