args_dechunker.h 556 B

1234567891011121314151617181920212223242526
  1. #pragma once
  2. #include <arrow/datum.h>
  3. #include <vector>
  4. #include <deque>
  5. #include "util.h"
  6. namespace NYql {
  7. namespace NUdf {
  8. class TArgsDechunker {
  9. public:
  10. explicit TArgsDechunker(std::vector<arrow::Datum>&& args);
  11. bool Next(std::vector<arrow::Datum>& chunk);
  12. // chunkLen will be zero if no arrays are present in chunk
  13. bool Next(std::vector<arrow::Datum>& chunk, ui64& chunkLen);
  14. private:
  15. const std::vector<arrow::Datum> Args;
  16. std::vector<std::deque<std::shared_ptr<arrow::ArrayData>>> Arrays;
  17. bool Finish = false;
  18. };
  19. }
  20. }