Reikriam

src/cpu-kernels/getitem.cpp

Jun 3rd, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 92.45 KB | None | 0 0
  1. awkward_regularize_rangeslice
  2. ----------------------------------------------------
  3.  
  4. def awkward_regularize_rangeslice(
  5. start: List[int],
  6. stop: List[int],
  7. posstep: bool,
  8. hasstart: bool,
  9. hasstop: bool,
  10. length: int,
  11. ):
  12. if posstep:
  13. if not hasstart:
  14. start = 0
  15. else:
  16. if start < 0:
  17. start = length
  18. if start < 0:
  19. start = 0
  20. if start > length:
  21. start = length
  22. if not hasstop:
  23. stop = length
  24. else:
  25. if stop < 0:
  26. stop = length
  27. if stop < 0:
  28. stop = 0
  29. if stop > length:
  30. stop = length
  31. if stop < start:
  32. stop = start
  33. else:
  34. if not hasstart:
  35. start = length - 1
  36. else:
  37. if start < 0:
  38. start = length
  39. if start < -1:
  40. start = -1
  41. if start > (length - 1):
  42. start = length - 1
  43. if not hasstop:
  44. stop = -1
  45. else:
  46. if stop < 0:
  47. stop = length
  48. if stop < -1:
  49. stop = -1
  50. if stop > (length - 1):
  51. stop = length - 1
  52. if stop > start:
  53. stop = start
  54.  
  55.  
  56. awkward_regularize_arrayslice
  57. ----------------------------------------------------
  58.  
  59. for T in int:
  60.  
  61. def awkward_regularize_arrayslice(
  62. flatheadptr: List[T], lenflathead: int, length: int
  63. ):
  64. for i in range(lenflathead):
  65. original = flatheadptr[i]
  66. if flatheadptr[i] < 0:
  67. flatheadptr[i] = length
  68. if (flatheadptr[i] < 0) or (flatheadptr[i] >= length):
  69. raise ValueError("index out of range")
  70. return
  71.  
  72.  
  73. awkward_regularize_arrayslice_64
  74. ----------------------------------------------------
  75.  
  76. def awkward_regularize_arrayslice_64(
  77. flatheadptr: List[int], lenflathead: int, length: int
  78. ):
  79. return awkward_regularize_arrayslice(flatheadptr, lenflathead, length)
  80.  
  81.  
  82. awkward_index8_to_index64
  83. ----------------------------------------------------
  84.  
  85. def awkward_index8_to_index64(toptr: List[int], fromptr: List[int], length: int):
  86. for i in range(length):
  87. toptr[i] = int(fromptr[i])
  88. return
  89.  
  90.  
  91. awkward_indexU8_to_index64
  92. ----------------------------------------------------
  93.  
  94. def awkward_indexU8_to_index64(toptr: List[int], fromptr: List[int], length: int):
  95. for i in range(length):
  96. toptr[i] = int(fromptr[i])
  97. return
  98.  
  99.  
  100. awkward_index32_to_index64
  101. ----------------------------------------------------
  102.  
  103. def awkward_index32_to_index64(toptr: List[int], fromptr: List[int], length: int):
  104. for i in range(length):
  105. toptr[i] = int(fromptr[i])
  106. return
  107.  
  108.  
  109. awkward_indexU32_to_index64
  110. ----------------------------------------------------
  111.  
  112. def awkward_indexU32_to_index64(toptr: List[int], fromptr: List[int], length: int):
  113. for i in range(length):
  114. toptr[i] = int(fromptr[i])
  115. return
  116.  
  117.  
  118. awkward_index_carry
  119. ----------------------------------------------------
  120.  
  121. for C in int:
  122. for T in int:
  123.  
  124. def awkward_index_carry(
  125. toindex: List[C],
  126. fromindex: List[C],
  127. carry: List[T],
  128. fromindexoffset: int,
  129. lenfromindex: int,
  130. length: int,
  131. ):
  132. for i in range(length):
  133. j = carry[i]
  134. if j > lenfromindex:
  135. raise ValueError("index out of range")
  136. toindex[i] = fromindex[fromindexoffset + j]
  137. return
  138.  
  139.  
  140. awkward_index8_carry_64
  141. ----------------------------------------------------
  142.  
  143. def awkward_index8_carry_64(
  144. toindex: List[int],
  145. fromindex: List[int],
  146. carry: List[int],
  147. fromindexoffset: int,
  148. lenfromindex: int,
  149. length: int,
  150. ):
  151. return awkward_index_carry(
  152. toindex, fromindex, carry, fromindexoffset, lenfromindex, length
  153. )
  154.  
  155.  
  156. awkward_indexU8_carry_64
  157. ----------------------------------------------------
  158.  
  159. def awkward_indexU8_carry_64(
  160. toindex: List[int],
  161. fromindex: List[int],
  162. carry: List[int],
  163. fromindexoffset: int,
  164. lenfromindex: int,
  165. length: int,
  166. ):
  167. return awkward_index_carry(
  168. toindex, fromindex, carry, fromindexoffset, lenfromindex, length
  169. )
  170.  
  171.  
  172. awkward_index32_carry_64
  173. ----------------------------------------------------
  174.  
  175. def awkward_index32_carry_64(
  176. toindex: List[int],
  177. fromindex: List[int],
  178. carry: List[int],
  179. fromindexoffset: int,
  180. lenfromindex: int,
  181. length: int,
  182. ):
  183. return awkward_index_carry(
  184. toindex, fromindex, carry, fromindexoffset, lenfromindex, length
  185. )
  186.  
  187.  
  188. awkward_indexU32_carry_64
  189. ----------------------------------------------------
  190.  
  191. def awkward_indexU32_carry_64(
  192. toindex: List[int],
  193. fromindex: List[int],
  194. carry: List[int],
  195. fromindexoffset: int,
  196. lenfromindex: int,
  197. length: int,
  198. ):
  199. return awkward_index_carry(
  200. toindex, fromindex, carry, fromindexoffset, lenfromindex, length
  201. )
  202.  
  203.  
  204. awkward_index64_carry_64
  205. ----------------------------------------------------
  206.  
  207. def awkward_index64_carry_64(
  208. toindex: List[int],
  209. fromindex: List[int],
  210. carry: List[int],
  211. fromindexoffset: int,
  212. lenfromindex: int,
  213. length: int,
  214. ):
  215. return awkward_index_carry(
  216. toindex, fromindex, carry, fromindexoffset, lenfromindex, length
  217. )
  218.  
  219.  
  220. awkward_index_carry_nocheck
  221. ----------------------------------------------------
  222.  
  223. for C in int:
  224. for T in int:
  225.  
  226. def awkward_index_carry_nocheck(
  227. toindex: List[C],
  228. fromindex: List[C],
  229. carry: List[T],
  230. fromindexoffset: int,
  231. length: int,
  232. ):
  233. for i in range(length):
  234. toindex[i] = fromindex[fromindexoffset + carry[i]]
  235. return
  236.  
  237.  
  238. awkward_index8_carry_nocheck_64
  239. ----------------------------------------------------
  240.  
  241. def awkward_index8_carry_nocheck_64(
  242. toindex: List[int],
  243. fromindex: List[int],
  244. carry: List[int],
  245. fromindexoffset: int,
  246. length: int,
  247. ):
  248. return awkward_index_carry_nocheck(
  249. toindex, fromindex, carry, fromindexoffset, length
  250. )
  251.  
  252.  
  253. awkward_indexU8_carry_nocheck_64
  254. ----------------------------------------------------
  255.  
  256. def awkward_indexU8_carry_nocheck_64(
  257. toindex: List[int],
  258. fromindex: List[int],
  259. carry: List[int],
  260. fromindexoffset: int,
  261. length: int,
  262. ):
  263. return awkward_index_carry_nocheck(
  264. toindex, fromindex, carry, fromindexoffset, length
  265. )
  266.  
  267.  
  268. awkward_index32_carry_nocheck_64
  269. ----------------------------------------------------
  270.  
  271. def awkward_index32_carry_nocheck_64(
  272. toindex: List[int],
  273. fromindex: List[int],
  274. carry: List[int],
  275. fromindexoffset: int,
  276. length: int,
  277. ):
  278. return awkward_index_carry_nocheck(
  279. toindex, fromindex, carry, fromindexoffset, length
  280. )
  281.  
  282.  
  283. awkward_indexU32_carry_nocheck_64
  284. ----------------------------------------------------
  285.  
  286. def awkward_indexU32_carry_nocheck_64(
  287. toindex: List[int],
  288. fromindex: List[int],
  289. carry: List[int],
  290. fromindexoffset: int,
  291. length: int,
  292. ):
  293. return awkward_index_carry_nocheck(
  294. toindex, fromindex, carry, fromindexoffset, length
  295. )
  296.  
  297.  
  298. awkward_index64_carry_nocheck_64
  299. ----------------------------------------------------
  300.  
  301. def awkward_index64_carry_nocheck_64(
  302. toindex: List[int],
  303. fromindex: List[int],
  304. carry: List[int],
  305. fromindexoffset: int,
  306. length: int,
  307. ):
  308. return awkward_index_carry_nocheck(
  309. toindex, fromindex, carry, fromindexoffset, length
  310. )
  311.  
  312.  
  313. awkward_slicearray_ravel
  314. ----------------------------------------------------
  315.  
  316. for T in int:
  317.  
  318. def awkward_slicearray_ravel(
  319. toptr: List[T],
  320. fromptr: List[T],
  321. ndim: int,
  322. shape: List[int],
  323. strides: List[int],
  324. ):
  325. if ndim == 1:
  326. for i in range(shape[0]):
  327. toptr[i] = fromptr[i * strides[0]]
  328. else:
  329. for i in range(shape[0]):
  330. err = awkward_slicearray_ravel(
  331. toptr[i * shape[1]],
  332. fromptr[i * strides[0]],
  333. ndim - 1,
  334. shape[1],
  335. strides[1],
  336. )
  337. if err.str != nullptr:
  338. return err
  339. return
  340.  
  341.  
  342. awkward_slicearray_ravel_64
  343. ----------------------------------------------------
  344.  
  345. def awkward_slicearray_ravel_64(
  346. toptr: List[int],
  347. fromptr: List[int],
  348. ndim: int,
  349. shape: List[int],
  350. strides: List[int],
  351. ):
  352. return awkward_slicearray_ravel(toptr, fromptr, ndim, shape, strides)
  353.  
  354.  
  355. awkward_slicemissing_check_same
  356. ----------------------------------------------------
  357.  
  358. def awkward_slicemissing_check_same(
  359. same: List[bool],
  360. bytemask: List[int],
  361. bytemaskoffset: int,
  362. missingindex: List[int],
  363. missingindexoffset: int,
  364. length: int,
  365. ):
  366. same = true
  367. for i in range(length):
  368. left = bytemask[bytemaskoffset + i] != 0
  369. right = missingindex[missingindexoffset + i] < 0
  370. if left != right:
  371. same = false
  372. return
  373. return
  374.  
  375.  
  376. awkward_carry_arange
  377. ----------------------------------------------------
  378.  
  379. for T in int:
  380.  
  381. def awkward_carry_arange(toptr: List[T], length: int):
  382. for i in range(length):
  383. toptr[i] = i
  384. return
  385.  
  386.  
  387. awkward_carry_arange_32
  388. ----------------------------------------------------
  389.  
  390. def awkward_carry_arange_32(toptr: List[int], length: int):
  391. return awkward_carry_arange(toptr, length)
  392.  
  393.  
  394. awkward_carry_arange_U32
  395. ----------------------------------------------------
  396.  
  397. def awkward_carry_arange_U32(toptr: List[int], length: int):
  398. return awkward_carry_arange(toptr, length)
  399.  
  400.  
  401. awkward_carry_arange_64
  402. ----------------------------------------------------
  403.  
  404. def awkward_carry_arange_64(toptr: List[int], length: int):
  405. return awkward_carry_arange(toptr, length)
  406.  
  407.  
  408. awkward_identities_getitem_carry
  409. ----------------------------------------------------
  410.  
  411. for ID in int:
  412. for T in int:
  413.  
  414. def awkward_identities_getitem_carry(
  415. newidentitiesptr: List[ID],
  416. identitiesptr: List[ID],
  417. carryptr: List[T],
  418. lencarry: int,
  419. offset: int,
  420. width: int,
  421. length: int,
  422. ):
  423. for i in range(lencarry):
  424. if carryptr[i] >= length:
  425. raise ValueError("index out of range")
  426. for j in range(width):
  427. newidentitiesptr[(width * i) + j] = identitiesptr[
  428. (offset + (width * carryptr[i])) + j
  429. ]
  430. return
  431.  
  432.  
  433. awkward_identities32_getitem_carry_64
  434. ----------------------------------------------------
  435.  
  436. def awkward_identities32_getitem_carry_64(
  437. newidentitiesptr: List[int],
  438. identitiesptr: List[int],
  439. carryptr: List[int],
  440. lencarry: int,
  441. offset: int,
  442. width: int,
  443. length: int,
  444. ):
  445. return awkward_identities_getitem_carry(
  446. newidentitiesptr, identitiesptr, carryptr, lencarry, offset, width, length
  447. )
  448.  
  449.  
  450. awkward_identities64_getitem_carry_64
  451. ----------------------------------------------------
  452.  
  453. def awkward_identities64_getitem_carry_64(
  454. newidentitiesptr: List[int],
  455. identitiesptr: List[int],
  456. carryptr: List[int],
  457. lencarry: int,
  458. offset: int,
  459. width: int,
  460. length: int,
  461. ):
  462. return awkward_identities_getitem_carry(
  463. newidentitiesptr, identitiesptr, carryptr, lencarry, offset, width, length
  464. )
  465.  
  466.  
  467. awkward_numpyarray_contiguous_init
  468. ----------------------------------------------------
  469.  
  470. for T in int:
  471.  
  472. def awkward_numpyarray_contiguous_init(toptr: List[T], skip: int, stride: int):
  473. for i in range(skip):
  474. toptr[i] = i * stride
  475. return
  476.  
  477.  
  478. awkward_numpyarray_contiguous_init_64
  479. ----------------------------------------------------
  480.  
  481. def awkward_numpyarray_contiguous_init_64(toptr: List[int], skip: int, stride: int):
  482. return awkward_numpyarray_contiguous_init(toptr, skip, stride)
  483.  
  484.  
  485. awkward_numpyarray_contiguous_copy
  486. ----------------------------------------------------
  487.  
  488. for T in int:
  489.  
  490. def awkward_numpyarray_contiguous_copy(
  491. toptr: List[int],
  492. fromptr: List[int],
  493. len: int,
  494. stride: int,
  495. offset: int,
  496. pos: List[int],
  497. ):
  498. for i in range(len):
  499. toptr[i * stride : i * stride + stride] = fromptr[
  500. offset + int(pos[i]) : offset + int(pos[i]) + stride
  501. ]
  502. return
  503.  
  504.  
  505. awkward_numpyarray_contiguous_copy_64
  506. ----------------------------------------------------
  507.  
  508. def awkward_numpyarray_contiguous_copy_64(
  509. toptr: List[int],
  510. fromptr: List[int],
  511. len: int,
  512. stride: int,
  513. offset: int,
  514. pos: List[int],
  515. ):
  516. return awkward_numpyarray_contiguous_copy(toptr, fromptr, len, stride, offset, pos)
  517.  
  518.  
  519. awkward_numpyarray_contiguous_next
  520. ----------------------------------------------------
  521.  
  522. for T in int:
  523.  
  524. def awkward_numpyarray_contiguous_next(
  525. topos: List[T], frompos: List[T], len: int, skip: int, stride: int
  526. ):
  527. for i in range(len):
  528. for j in range(skip):
  529. topos[(i * skip) + j] = frompos[i] + (j * stride)
  530. return
  531.  
  532.  
  533. awkward_numpyarray_contiguous_next_64
  534. ----------------------------------------------------
  535.  
  536. def awkward_numpyarray_contiguous_next_64(
  537. topos: List[int], frompos: List[int], len: int, skip: int, stride: int
  538. ):
  539. return awkward_numpyarray_contiguous_next(topos, frompos, len, skip, stride)
  540.  
  541.  
  542. awkward_numpyarray_getitem_next_null
  543. ----------------------------------------------------
  544.  
  545. def awkward_numpyarray_getitem_next_null(
  546. toptr: List[int],
  547. fromptr: List[int],
  548. len: int,
  549. stride: int,
  550. offset: int,
  551. pos: List[int],
  552. ):
  553. for i in range(len):
  554. toptr[i * stride : i * stride + stride] = fromptr[
  555. offset + (pos[i] * stride) : offset + (pos[i] * stride) + stride
  556. ]
  557. return
  558.  
  559.  
  560. awkward_numpyarray_getitem_next_null_64
  561. ----------------------------------------------------
  562.  
  563. def awkward_numpyarray_getitem_next_null_64(
  564. toptr: List[int],
  565. fromptr: List[int],
  566. len: int,
  567. stride: int,
  568. offset: int,
  569. pos: List[int],
  570. ):
  571. return awkward_numpyarray_getitem_next_null(
  572. toptr, fromptr, len, stride, offset, pos
  573. )
  574.  
  575.  
  576. awkward_numpyarray_getitem_next_at
  577. ----------------------------------------------------
  578.  
  579. def awkward_numpyarray_getitem_next_at(
  580. nextcarryptr: List[T], carryptr: List[T], lencarry: int, skip: int, at: int
  581. ):
  582. for i in range(lencarry):
  583. nextcarryptr[i] = (skip * carryptr[i]) + at
  584. return
  585.  
  586.  
  587. awkward_numpyarray_getitem_next_at_64
  588. ----------------------------------------------------
  589.  
  590. def awkward_numpyarray_getitem_next_at_64(
  591. nextcarryptr: List[int], carryptr: List[int], lencarry: int, skip: int, at: int
  592. ):
  593. return awkward_numpyarray_getitem_next_at(
  594. nextcarryptr, carryptr, lencarry, skip, at
  595. )
  596.  
  597.  
  598. awkward_numpyarray_getitem_next_range
  599. ----------------------------------------------------
  600.  
  601. def awkward_numpyarray_getitem_next_range(
  602. nextcarryptr: List[T],
  603. carryptr: List[T],
  604. lencarry: int,
  605. lenhead: int,
  606. skip: int,
  607. start: int,
  608. step: int,
  609. ):
  610. for i in range(lencarry):
  611. for j in range(lenhead):
  612. nextcarryptr[(i * lenhead) + j] = ((skip * carryptr[i]) + start) + (
  613. j * step
  614. )
  615. return
  616.  
  617.  
  618. awkward_numpyarray_getitem_next_range_64
  619. ----------------------------------------------------
  620.  
  621. def awkward_numpyarray_getitem_next_range_64(
  622. nextcarryptr: List[int],
  623. carryptr: List[int],
  624. lencarry: int,
  625. lenhead: int,
  626. skip: int,
  627. start: int,
  628. step: int,
  629. ):
  630. return awkward_numpyarray_getitem_next_range(
  631. nextcarryptr, carryptr, lencarry, lenhead, skip, start, step
  632. )
  633.  
  634.  
  635. awkward_numpyarray_getitem_next_range_advanced
  636. ----------------------------------------------------
  637.  
  638. def awkward_numpyarray_getitem_next_range_advanced(
  639. nextcarryptr: List[T],
  640. nextadvancedptr: List[T],
  641. carryptr: List[T],
  642. advancedptr: List[T],
  643. lencarry: int,
  644. lenhead: int,
  645. skip: int,
  646. start: int,
  647. step: int,
  648. ):
  649. for i in range(lencarry):
  650. for j in range(lenhead):
  651. nextcarryptr[(i * lenhead) + j] = ((skip * carryptr[i]) + start) + (
  652. j * step
  653. )
  654. nextadvancedptr[(i * lenhead) + j] = advancedptr[i]
  655. return
  656.  
  657.  
  658. awkward_numpyarray_getitem_next_range_advanced_64
  659. ----------------------------------------------------
  660.  
  661. def awkward_numpyarray_getitem_next_range_advanced_64(
  662. nextcarryptr: List[int],
  663. nextadvancedptr: List[int],
  664. carryptr: List[int],
  665. advancedptr: List[int],
  666. lencarry: int,
  667. lenhead: int,
  668. skip: int,
  669. start: int,
  670. step: int,
  671. ):
  672. return awkward_numpyarray_getitem_next_range_advanced(
  673. nextcarryptr,
  674. nextadvancedptr,
  675. carryptr,
  676. advancedptr,
  677. lencarry,
  678. lenhead,
  679. skip,
  680. start,
  681. step,
  682. )
  683.  
  684.  
  685. awkward_numpyarray_getitem_next_array
  686. ----------------------------------------------------
  687.  
  688. def awkward_numpyarray_getitem_next_array(
  689. nextcarryptr: List[T],
  690. nextadvancedptr: List[T],
  691. carryptr: List[T],
  692. flatheadptr: List[T],
  693. lencarry: int,
  694. lenflathead: int,
  695. skip: int,
  696. ):
  697. for i in range(lencarry):
  698. for j in range(lenflathead):
  699. nextcarryptr[(i * lenflathead) + j] = (skip * carryptr[i]) + flatheadptr[j]
  700. nextadvancedptr[(i * lenflathead) + j] = j
  701. return
  702.  
  703.  
  704. awkward_numpyarray_getitem_next_array_64
  705. ----------------------------------------------------
  706.  
  707. def awkward_numpyarray_getitem_next_array_64(
  708. nextcarryptr: List[int],
  709. nextadvancedptr: List[int],
  710. carryptr: List[int],
  711. flatheadptr: List[int],
  712. lencarry: int,
  713. lenflathead: int,
  714. skip: int,
  715. ):
  716. return awkward_numpyarray_getitem_next_array(
  717. nextcarryptr,
  718. nextadvancedptr,
  719. carryptr,
  720. flatheadptr,
  721. lencarry,
  722. lenflathead,
  723. skip,
  724. )
  725.  
  726.  
  727. awkward_numpyarray_getitem_next_array_advanced
  728. ----------------------------------------------------
  729.  
  730. def awkward_numpyarray_getitem_next_array_advanced(
  731. nextcarryptr: List[T],
  732. carryptr: List[T],
  733. advancedptr: List[T],
  734. flatheadptr: List[T],
  735. lencarry: int,
  736. skip: int,
  737. ):
  738. for i in range(lencarry):
  739. nextcarryptr[i] = (skip * carryptr[i]) + flatheadptr[advancedptr[i]]
  740. return
  741.  
  742.  
  743. awkward_numpyarray_getitem_next_array_advanced_64
  744. ----------------------------------------------------
  745.  
  746. def awkward_numpyarray_getitem_next_array_advanced_64(
  747. nextcarryptr: List[int],
  748. carryptr: List[int],
  749. advancedptr: List[int],
  750. flatheadptr: List[int],
  751. lencarry: int,
  752. skip: int,
  753. ):
  754. return awkward_numpyarray_getitem_next_array_advanced(
  755. nextcarryptr, carryptr, advancedptr, flatheadptr, lencarry, skip
  756. )
  757.  
  758.  
  759. awkward_numpyarray_getitem_boolean_numtrue
  760. ----------------------------------------------------
  761.  
  762. def awkward_numpyarray_getitem_boolean_numtrue(
  763. numtrue: List[int], fromptr: List[int], byteoffset: int, length: int, stride: int
  764. ):
  765. numtrue = 0
  766. i = 0
  767. while i < length:
  768. numtrue = numtrue + (fromptr[byteoffset + i] != 0)
  769. i = stride
  770. return
  771.  
  772.  
  773. awkward_numpyarray_getitem_boolean_nonzero
  774. ----------------------------------------------------
  775.  
  776. for T in int:
  777.  
  778. def awkward_numpyarray_getitem_boolean_nonzero(
  779. toptr: List[T], fromptr: List[int], byteoffset: int, length: int, stride: int
  780. ):
  781. k = 0
  782. i = 0
  783. while i < length:
  784. if fromptr[byteoffset + i] != 0:
  785. toptr[k] = i
  786. k = k + 1
  787. i = stride
  788. return
  789.  
  790.  
  791. awkward_numpyarray_getitem_boolean_nonzero_64
  792. ----------------------------------------------------
  793.  
  794. def awkward_numpyarray_getitem_boolean_nonzero_64(
  795. toptr: List[int], fromptr: List[int], byteoffset: int, length: int, stride: int
  796. ):
  797. return awkward_numpyarray_getitem_intean_nonzero(
  798. toptr, fromptr, byteoffset, length, stride
  799. )
  800.  
  801.  
  802. awkward_listarray_getitem_next_at
  803. ----------------------------------------------------
  804.  
  805. for C in int:
  806. for T in int:
  807.  
  808. def awkward_listarray_getitem_next_at(
  809. tocarry: List[T],
  810. fromstarts: List[C],
  811. fromstops: List[C],
  812. lenstarts: int,
  813. startsoffset: int,
  814. stopsoffset: int,
  815. at: int,
  816. ):
  817. for i in range(lenstarts):
  818. length = fromstops[stopsoffset + i] - fromstarts[startsoffset + i]
  819. regular_at = at
  820. if regular_at < 0:
  821. regular_at = length
  822. if not (0 <= regular_at) and (regular_at < length):
  823. raise ValueError("index out of range")
  824. tocarry[i] = fromstarts[startsoffset + i] + regular_at
  825. return
  826.  
  827.  
  828. awkward_listarray32_getitem_next_at_64
  829. ----------------------------------------------------
  830.  
  831. def awkward_listarray32_getitem_next_at_64(
  832. tocarry: List[int],
  833. fromstarts: List[int],
  834. fromstops: List[int],
  835. lenstarts: int,
  836. startsoffset: int,
  837. stopsoffset: int,
  838. at: int,
  839. ):
  840. return awkward_listarray_getitem_next_at(
  841. tocarry, fromstarts, fromstops, lenstarts, startsoffset, stopsoffset, at
  842. )
  843.  
  844.  
  845. awkward_listarrayU32_getitem_next_at_64
  846. ----------------------------------------------------
  847.  
  848. def awkward_listarrayU32_getitem_next_at_64(
  849. tocarry: List[int],
  850. fromstarts: List[int],
  851. fromstops: List[int],
  852. lenstarts: int,
  853. startsoffset: int,
  854. stopsoffset: int,
  855. at: int,
  856. ):
  857. return awkward_listarray_getitem_next_at(
  858. tocarry, fromstarts, fromstops, lenstarts, startsoffset, stopsoffset, at
  859. )
  860.  
  861.  
  862. awkward_listarray64_getitem_next_at_64
  863. ----------------------------------------------------
  864.  
  865. def awkward_listarray64_getitem_next_at_64(
  866. tocarry: List[int],
  867. fromstarts: List[int],
  868. fromstops: List[int],
  869. lenstarts: int,
  870. startsoffset: int,
  871. stopsoffset: int,
  872. at: int,
  873. ):
  874. return awkward_listarray_getitem_next_at(
  875. tocarry, fromstarts, fromstops, lenstarts, startsoffset, stopsoffset, at
  876. )
  877.  
  878.  
  879. awkward_listarray_getitem_next_range_carrylength
  880. ----------------------------------------------------
  881.  
  882. for C in int:
  883.  
  884. def awkward_listarray_getitem_next_range_carrylength(
  885. carrylength: List[int],
  886. fromstarts: List[C],
  887. fromstops: List[C],
  888. lenstarts: int,
  889. startsoffset: int,
  890. stopsoffset: int,
  891. start: int,
  892. stop: int,
  893. step: int,
  894. ):
  895. carrylength = 0
  896. for i in range(lenstarts):
  897. length = fromstops[stopsoffset + i] - fromstarts[startsoffset + i]
  898. regular_start = start
  899. regular_stop = stop
  900. awkward_regularize_rangeslice(
  901. regular_start,
  902. regular_stop,
  903. step > 0,
  904. start != kSliceNone,
  905. stop != kSliceNone,
  906. length,
  907. )
  908. if step > 0:
  909. j = regular_start
  910. while j < regular_stop:
  911. carrylength = carrylength + 1
  912. j = step
  913. else:
  914. j = regular_start
  915. while j > regular_stop:
  916. carrylength = carrylength + 1
  917. j = step
  918. return
  919.  
  920.  
  921. awkward_listarray32_getitem_next_range_carrylength
  922. ----------------------------------------------------
  923.  
  924. def awkward_listarray32_getitem_next_range_carrylength(
  925. carrylength: List[int],
  926. fromstarts: List[int],
  927. fromstops: List[int],
  928. lenstarts: int,
  929. startsoffset: int,
  930. stopsoffset: int,
  931. start: int,
  932. stop: int,
  933. step: int,
  934. ):
  935. return awkward_listarray_getitem_next_range_carrylength(
  936. carrylength,
  937. fromstarts,
  938. fromstops,
  939. lenstarts,
  940. startsoffset,
  941. stopsoffset,
  942. start,
  943. stop,
  944. step,
  945. )
  946.  
  947.  
  948. awkward_listarrayU32_getitem_next_range_carrylength
  949. ----------------------------------------------------
  950.  
  951. def awkward_listarrayU32_getitem_next_range_carrylength(
  952. carrylength: List[int],
  953. fromstarts: List[int],
  954. fromstops: List[int],
  955. lenstarts: int,
  956. startsoffset: int,
  957. stopsoffset: int,
  958. start: int,
  959. stop: int,
  960. step: int,
  961. ):
  962. return awkward_listarray_getitem_next_range_carrylength(
  963. carrylength,
  964. fromstarts,
  965. fromstops,
  966. lenstarts,
  967. startsoffset,
  968. stopsoffset,
  969. start,
  970. stop,
  971. step,
  972. )
  973.  
  974.  
  975. awkward_listarray64_getitem_next_range_carrylength
  976. ----------------------------------------------------
  977.  
  978. def awkward_listarray64_getitem_next_range_carrylength(
  979. carrylength: List[int],
  980. fromstarts: List[int],
  981. fromstops: List[int],
  982. lenstarts: int,
  983. startsoffset: int,
  984. stopsoffset: int,
  985. start: int,
  986. stop: int,
  987. step: int,
  988. ):
  989. return awkward_listarray_getitem_next_range_carrylength(
  990. carrylength,
  991. fromstarts,
  992. fromstops,
  993. lenstarts,
  994. startsoffset,
  995. stopsoffset,
  996. start,
  997. stop,
  998. step,
  999. )
  1000.  
  1001.  
  1002. awkward_listarray_getitem_next_range
  1003. ----------------------------------------------------
  1004.  
  1005. for C in int:
  1006. for T in int:
  1007.  
  1008. def awkward_listarray_getitem_next_range(
  1009. tooffsets: List[C],
  1010. tocarry: List[T],
  1011. fromstarts: List[C],
  1012. fromstops: List[C],
  1013. lenstarts: int,
  1014. startsoffset: int,
  1015. stopsoffset: int,
  1016. start: int,
  1017. stop: int,
  1018. step: int,
  1019. ):
  1020. k = 0
  1021. tooffsets[0] = 0
  1022. if step > 0:
  1023. for i in range(lenstarts):
  1024. length = fromstops[stopsoffset + i] - fromstarts[startsoffset + i]
  1025. regular_start = start
  1026. regular_stop = stop
  1027. awkward_regularize_rangeslice(
  1028. regular_start,
  1029. regular_stop,
  1030. step > 0,
  1031. start != kSliceNone,
  1032. stop != kSliceNone,
  1033. length,
  1034. )
  1035. j = regular_start
  1036. while j < regular_stop:
  1037. tocarry[k] = fromstarts[startsoffset + i] + j
  1038. k = k + 1
  1039. j = step
  1040. tooffsets[i + 1] = int(k)
  1041. else:
  1042. for i in range(lenstarts):
  1043. length = fromstops[stopsoffset + i] - fromstarts[startsoffset + i]
  1044. regular_start = start
  1045. regular_stop = stop
  1046. awkward_regularize_rangeslice(
  1047. regular_start,
  1048. regular_stop,
  1049. step > 0,
  1050. start != kSliceNone,
  1051. stop != kSliceNone,
  1052. length,
  1053. )
  1054. j = regular_start
  1055. while j > regular_stop:
  1056. tocarry[k] = fromstarts[startsoffset + i] + j
  1057. k = k + 1
  1058. j = step
  1059. tooffsets[i + 1] = int(k)
  1060. return
  1061.  
  1062.  
  1063. awkward_listarray32_getitem_next_range_64
  1064. ----------------------------------------------------
  1065.  
  1066. def awkward_listarray32_getitem_next_range_64(
  1067. tooffsets: List[int],
  1068. tocarry: List[int],
  1069. fromstarts: List[int],
  1070. fromstops: List[int],
  1071. lenstarts: int,
  1072. startsoffset: int,
  1073. stopsoffset: int,
  1074. start: int,
  1075. stop: int,
  1076. step: int,
  1077. ):
  1078. return awkward_listarray_getitem_next_range(
  1079. tooffsets,
  1080. tocarry,
  1081. fromstarts,
  1082. fromstops,
  1083. lenstarts,
  1084. startsoffset,
  1085. stopsoffset,
  1086. start,
  1087. stop,
  1088. step,
  1089. )
  1090.  
  1091.  
  1092. awkward_listarrayU32_getitem_next_range_64
  1093. ----------------------------------------------------
  1094.  
  1095. def awkward_listarrayU32_getitem_next_range_64(
  1096. tooffsets: List[int],
  1097. tocarry: List[int],
  1098. fromstarts: List[int],
  1099. fromstops: List[int],
  1100. lenstarts: int,
  1101. startsoffset: int,
  1102. stopsoffset: int,
  1103. start: int,
  1104. stop: int,
  1105. step: int,
  1106. ):
  1107. return awkward_listarray_getitem_next_range(
  1108. tooffsets,
  1109. tocarry,
  1110. fromstarts,
  1111. fromstops,
  1112. lenstarts,
  1113. startsoffset,
  1114. stopsoffset,
  1115. start,
  1116. stop,
  1117. step,
  1118. )
  1119.  
  1120.  
  1121. awkward_listarray64_getitem_next_range_64
  1122. ----------------------------------------------------
  1123.  
  1124. def awkward_listarray64_getitem_next_range_64(
  1125. tooffsets: List[int],
  1126. tocarry: List[int],
  1127. fromstarts: List[int],
  1128. fromstops: List[int],
  1129. lenstarts: int,
  1130. startsoffset: int,
  1131. stopsoffset: int,
  1132. start: int,
  1133. stop: int,
  1134. step: int,
  1135. ):
  1136. return awkward_listarray_getitem_next_range(
  1137. tooffsets,
  1138. tocarry,
  1139. fromstarts,
  1140. fromstops,
  1141. lenstarts,
  1142. startsoffset,
  1143. stopsoffset,
  1144. start,
  1145. stop,
  1146. step,
  1147. )
  1148.  
  1149.  
  1150. awkward_listarray_getitem_next_range_counts
  1151. ----------------------------------------------------
  1152.  
  1153. for C in int:
  1154. for T in int:
  1155.  
  1156. def awkward_listarray_getitem_next_range_counts(
  1157. total: List[int], fromoffsets: List[C], lenstarts: int
  1158. ):
  1159. total = 0
  1160. for i in range(lenstarts):
  1161. total = (total + fromoffsets[i + 1]) - fromoffsets[i]
  1162. return
  1163.  
  1164.  
  1165. awkward_listarray32_getitem_next_range_counts_64
  1166. ----------------------------------------------------
  1167.  
  1168. def awkward_listarray32_getitem_next_range_counts_64(
  1169. total: List[int], fromoffsets: List[int], lenstarts: int
  1170. ):
  1171. return awkward_listarray_getitem_next_range_counts(total, fromoffsets, lenstarts)
  1172.  
  1173.  
  1174. awkward_listarrayU32_getitem_next_range_counts_64
  1175. ----------------------------------------------------
  1176.  
  1177. def awkward_listarrayU32_getitem_next_range_counts_64(
  1178. total: List[int], fromoffsets: List[int], lenstarts: int
  1179. ):
  1180. return awkward_listarray_getitem_next_range_counts(total, fromoffsets, lenstarts)
  1181.  
  1182.  
  1183. awkward_listarray64_getitem_next_range_counts_64
  1184. ----------------------------------------------------
  1185.  
  1186. def awkward_listarray64_getitem_next_range_counts_64(
  1187. total: List[int], fromoffsets: List[int], lenstarts: int
  1188. ):
  1189. return awkward_listarray_getitem_next_range_counts(total, fromoffsets, lenstarts)
  1190.  
  1191.  
  1192. awkward_listarray_getitem_next_range_spreadadvanced
  1193. ----------------------------------------------------
  1194.  
  1195. for C in int:
  1196. for T in int:
  1197.  
  1198. def awkward_listarray_getitem_next_range_spreadadvanced(
  1199. toadvanced: List[T],
  1200. fromadvanced: List[T],
  1201. fromoffsets: List[C],
  1202. lenstarts: int,
  1203. ):
  1204. for i in range(lenstarts):
  1205. count = fromoffsets[i + 1] - fromoffsets[i]
  1206. for j in range(count):
  1207. toadvanced[fromoffsets[i] + j] = fromadvanced[i]
  1208. return
  1209.  
  1210.  
  1211. awkward_listarray32_getitem_next_range_spreadadvanced_64
  1212. ----------------------------------------------------
  1213.  
  1214. def awkward_listarray32_getitem_next_range_spreadadvanced_64(
  1215. toadvanced: List[int],
  1216. fromadvanced: List[int],
  1217. fromoffsets: List[int],
  1218. lenstarts: int,
  1219. ):
  1220. return awkward_listarray_getitem_next_range_spreadadvanced(
  1221. toadvanced, fromadvanced, fromoffsets, lenstarts
  1222. )
  1223.  
  1224.  
  1225. awkward_listarrayU32_getitem_next_range_spreadadvanced_64
  1226. ----------------------------------------------------
  1227.  
  1228. def awkward_listarrayU32_getitem_next_range_spreadadvanced_64(
  1229. toadvanced: List[int],
  1230. fromadvanced: List[int],
  1231. fromoffsets: List[int],
  1232. lenstarts: int,
  1233. ):
  1234. return awkward_listarray_getitem_next_range_spreadadvanced(
  1235. toadvanced, fromadvanced, fromoffsets, lenstarts
  1236. )
  1237.  
  1238.  
  1239. awkward_listarray64_getitem_next_range_spreadadvanced_64
  1240. ----------------------------------------------------
  1241.  
  1242. def awkward_listarray64_getitem_next_range_spreadadvanced_64(
  1243. toadvanced: List[int],
  1244. fromadvanced: List[int],
  1245. fromoffsets: List[int],
  1246. lenstarts: int,
  1247. ):
  1248. return awkward_listarray_getitem_next_range_spreadadvanced(
  1249. toadvanced, fromadvanced, fromoffsets, lenstarts
  1250. )
  1251.  
  1252.  
  1253. awkward_listarray_getitem_next_array
  1254. ----------------------------------------------------
  1255.  
  1256. for C in int:
  1257. for T in int:
  1258.  
  1259. def awkward_listarray_getitem_next_array(
  1260. tocarry: List[T],
  1261. toadvanced: List[T],
  1262. fromstarts: List[C],
  1263. fromstops: List[C],
  1264. fromarray: List[T],
  1265. startsoffset: int,
  1266. stopsoffset: int,
  1267. lenstarts: int,
  1268. lenarray: int,
  1269. lencontent: int,
  1270. ):
  1271. for i in range(lenstarts):
  1272. if fromstops[stopsoffset + i] < fromstarts[startsoffset + i]:
  1273. raise ValueError("stops[i] < starts[i]")
  1274. if (
  1275. fromstarts[startsoffset + i] != fromstops[stopsoffset + i]
  1276. ) and lencontent:
  1277. raise ValueError("stops[i] > len(content)")
  1278. length = fromstops[stopsoffset + i] - fromstarts[startsoffset + i]
  1279. for j in range(lenarray):
  1280. regular_at = fromarray[j]
  1281. if regular_at < 0:
  1282. regular_at = length
  1283. if not (0 <= regular_at) and (regular_at < length):
  1284. raise ValueError("index out of range")
  1285. tocarry[(i * lenarray) + j] = (
  1286. fromstarts[startsoffset + i] + regular_at
  1287. )
  1288. toadvanced[(i * lenarray) + j] = j
  1289. return
  1290.  
  1291.  
  1292. awkward_listarray32_getitem_next_array_64
  1293. ----------------------------------------------------
  1294.  
  1295. def awkward_listarray32_getitem_next_array_64(
  1296. tocarry: List[int],
  1297. toadvanced: List[int],
  1298. fromstarts: List[int],
  1299. fromstops: List[int],
  1300. fromarray: List[int],
  1301. startsoffset: int,
  1302. stopsoffset: int,
  1303. lenstarts: int,
  1304. lenarray: int,
  1305. lencontent: int,
  1306. ):
  1307. return awkward_listarray_getitem_next_array(
  1308. tocarry,
  1309. toadvanced,
  1310. fromstarts,
  1311. fromstops,
  1312. fromarray,
  1313. startsoffset,
  1314. stopsoffset,
  1315. lenstarts,
  1316. lenarray,
  1317. lencontent,
  1318. )
  1319.  
  1320.  
  1321. awkward_listarrayU32_getitem_next_array_64
  1322. ----------------------------------------------------
  1323.  
  1324. def awkward_listarrayU32_getitem_next_array_64(
  1325. tocarry: List[int],
  1326. toadvanced: List[int],
  1327. fromstarts: List[int],
  1328. fromstops: List[int],
  1329. fromarray: List[int],
  1330. startsoffset: int,
  1331. stopsoffset: int,
  1332. lenstarts: int,
  1333. lenarray: int,
  1334. lencontent: int,
  1335. ):
  1336. return awkward_listarray_getitem_next_array(
  1337. tocarry,
  1338. toadvanced,
  1339. fromstarts,
  1340. fromstops,
  1341. fromarray,
  1342. startsoffset,
  1343. stopsoffset,
  1344. lenstarts,
  1345. lenarray,
  1346. lencontent,
  1347. )
  1348.  
  1349.  
  1350. awkward_listarray64_getitem_next_array_64
  1351. ----------------------------------------------------
  1352.  
  1353. def awkward_listarray64_getitem_next_array_64(
  1354. tocarry: List[int],
  1355. toadvanced: List[int],
  1356. fromstarts: List[int],
  1357. fromstops: List[int],
  1358. fromarray: List[int],
  1359. startsoffset: int,
  1360. stopsoffset: int,
  1361. lenstarts: int,
  1362. lenarray: int,
  1363. lencontent: int,
  1364. ):
  1365. return awkward_listarray_getitem_next_array(
  1366. tocarry,
  1367. toadvanced,
  1368. fromstarts,
  1369. fromstops,
  1370. fromarray,
  1371. startsoffset,
  1372. stopsoffset,
  1373. lenstarts,
  1374. lenarray,
  1375. lencontent,
  1376. )
  1377.  
  1378.  
  1379. awkward_listarray_getitem_next_array_advanced
  1380. ----------------------------------------------------
  1381.  
  1382. for C in int:
  1383. for T in int:
  1384.  
  1385. def awkward_listarray_getitem_next_array_advanced(
  1386. tocarry: List[T],
  1387. toadvanced: List[T],
  1388. fromstarts: List[C],
  1389. fromstops: List[C],
  1390. fromarray: List[T],
  1391. fromadvanced: List[T],
  1392. startsoffset: int,
  1393. stopsoffset: int,
  1394. lenstarts: int,
  1395. lenarray: int,
  1396. lencontent: int,
  1397. ):
  1398. for i in range(lenstarts):
  1399. if fromstops[stopsoffset + i] < fromstarts[startsoffset + i]:
  1400. raise ValueError("stops[i] < starts[i]")
  1401. if (
  1402. fromstarts[startsoffset + i] != fromstops[stopsoffset + i]
  1403. ) and lencontent:
  1404. raise ValueError("stops[i] > len(content)")
  1405. length = fromstops[stopsoffset + i] - fromstarts[startsoffset + i]
  1406. regular_at = fromarray[fromadvanced[i]]
  1407. if regular_at < 0:
  1408. regular_at = length
  1409. if not (0 <= regular_at) and (regular_at < length):
  1410. raise ValueError("index out of range")
  1411. tocarry[i] = fromstarts[startsoffset + i] + regular_at
  1412. toadvanced[i] = i
  1413. return
  1414.  
  1415.  
  1416. awkward_listarray32_getitem_next_array_advanced_64
  1417. ----------------------------------------------------
  1418.  
  1419. def awkward_listarray32_getitem_next_array_advanced_64(
  1420. tocarry: List[int],
  1421. toadvanced: List[int],
  1422. fromstarts: List[int],
  1423. fromstops: List[int],
  1424. fromarray: List[int],
  1425. fromadvanced: List[int],
  1426. startsoffset: int,
  1427. stopsoffset: int,
  1428. lenstarts: int,
  1429. lenarray: int,
  1430. lencontent: int,
  1431. ):
  1432. return awkward_listarray_getitem_next_array_advanced(
  1433. tocarry,
  1434. toadvanced,
  1435. fromstarts,
  1436. fromstops,
  1437. fromarray,
  1438. fromadvanced,
  1439. startsoffset,
  1440. stopsoffset,
  1441. lenstarts,
  1442. lenarray,
  1443. lencontent,
  1444. )
  1445.  
  1446.  
  1447. awkward_listarrayU32_getitem_next_array_advanced_64
  1448. ----------------------------------------------------
  1449.  
  1450. def awkward_listarrayU32_getitem_next_array_advanced_64(
  1451. tocarry: List[int],
  1452. toadvanced: List[int],
  1453. fromstarts: List[int],
  1454. fromstops: List[int],
  1455. fromarray: List[int],
  1456. fromadvanced: List[int],
  1457. startsoffset: int,
  1458. stopsoffset: int,
  1459. lenstarts: int,
  1460. lenarray: int,
  1461. lencontent: int,
  1462. ):
  1463. return awkward_listarray_getitem_next_array_advanced(
  1464. tocarry,
  1465. toadvanced,
  1466. fromstarts,
  1467. fromstops,
  1468. fromarray,
  1469. fromadvanced,
  1470. startsoffset,
  1471. stopsoffset,
  1472. lenstarts,
  1473. lenarray,
  1474. lencontent,
  1475. )
  1476.  
  1477.  
  1478. awkward_listarray64_getitem_next_array_advanced_64
  1479. ----------------------------------------------------
  1480.  
  1481. def awkward_listarray64_getitem_next_array_advanced_64(
  1482. tocarry: List[int],
  1483. toadvanced: List[int],
  1484. fromstarts: List[int],
  1485. fromstops: List[int],
  1486. fromarray: List[int],
  1487. fromadvanced: List[int],
  1488. startsoffset: int,
  1489. stopsoffset: int,
  1490. lenstarts: int,
  1491. lenarray: int,
  1492. lencontent: int,
  1493. ):
  1494. return awkward_listarray_getitem_next_array_advanced(
  1495. tocarry,
  1496. toadvanced,
  1497. fromstarts,
  1498. fromstops,
  1499. fromarray,
  1500. fromadvanced,
  1501. startsoffset,
  1502. stopsoffset,
  1503. lenstarts,
  1504. lenarray,
  1505. lencontent,
  1506. )
  1507.  
  1508.  
  1509. awkward_listarray_getitem_carry
  1510. ----------------------------------------------------
  1511.  
  1512. for C in int:
  1513. for T in int:
  1514.  
  1515. def awkward_listarray_getitem_carry(
  1516. tostarts: List[C],
  1517. tostops: List[C],
  1518. fromstarts: List[C],
  1519. fromstops: List[C],
  1520. fromcarry: List[T],
  1521. startsoffset: int,
  1522. stopsoffset: int,
  1523. lenstarts: int,
  1524. lencarry: int,
  1525. ):
  1526. for i in range(lencarry):
  1527. if fromcarry[i] >= lenstarts:
  1528. raise ValueError("index out of range")
  1529. tostarts[i] = int(fromstarts[startsoffset + fromcarry[i]])
  1530. tostops[i] = int(fromstops[stopsoffset + fromcarry[i]])
  1531. return
  1532.  
  1533.  
  1534. awkward_listarray32_getitem_carry_64
  1535. ----------------------------------------------------
  1536.  
  1537. def awkward_listarray32_getitem_carry_64(
  1538. tostarts: List[int],
  1539. tostops: List[int],
  1540. fromstarts: List[int],
  1541. fromstops: List[int],
  1542. fromcarry: List[int],
  1543. startsoffset: int,
  1544. stopsoffset: int,
  1545. lenstarts: int,
  1546. lencarry: int,
  1547. ):
  1548. return awkward_listarray_getitem_carry(
  1549. tostarts,
  1550. tostops,
  1551. fromstarts,
  1552. fromstops,
  1553. fromcarry,
  1554. startsoffset,
  1555. stopsoffset,
  1556. lenstarts,
  1557. lencarry,
  1558. )
  1559.  
  1560.  
  1561. awkward_listarrayU32_getitem_carry_64
  1562. ----------------------------------------------------
  1563.  
  1564. def awkward_listarrayU32_getitem_carry_64(
  1565. tostarts: List[int],
  1566. tostops: List[int],
  1567. fromstarts: List[int],
  1568. fromstops: List[int],
  1569. fromcarry: List[int],
  1570. startsoffset: int,
  1571. stopsoffset: int,
  1572. lenstarts: int,
  1573. lencarry: int,
  1574. ):
  1575. return awkward_listarray_getitem_carry(
  1576. tostarts,
  1577. tostops,
  1578. fromstarts,
  1579. fromstops,
  1580. fromcarry,
  1581. startsoffset,
  1582. stopsoffset,
  1583. lenstarts,
  1584. lencarry,
  1585. )
  1586.  
  1587.  
  1588. awkward_listarray64_getitem_carry_64
  1589. ----------------------------------------------------
  1590.  
  1591. def awkward_listarray64_getitem_carry_64(
  1592. tostarts: List[int],
  1593. tostops: List[int],
  1594. fromstarts: List[int],
  1595. fromstops: List[int],
  1596. fromcarry: List[int],
  1597. startsoffset: int,
  1598. stopsoffset: int,
  1599. lenstarts: int,
  1600. lencarry: int,
  1601. ):
  1602. return awkward_listarray_getitem_carry(
  1603. tostarts,
  1604. tostops,
  1605. fromstarts,
  1606. fromstops,
  1607. fromcarry,
  1608. startsoffset,
  1609. stopsoffset,
  1610. lenstarts,
  1611. lencarry,
  1612. )
  1613.  
  1614.  
  1615. awkward_regulararray_getitem_next_at
  1616. ----------------------------------------------------
  1617.  
  1618. for T in int:
  1619.  
  1620. def awkward_regulararray_getitem_next_at(
  1621. tocarry: List[T], at: int, len: int, size: int
  1622. ):
  1623. regular_at = at
  1624. if regular_at < 0:
  1625. regular_at = size
  1626. if not (0 <= regular_at) and (regular_at < size):
  1627. raise ValueError("index out of range")
  1628. for i in range(len):
  1629. tocarry[i] = (i * size) + regular_at
  1630. return
  1631.  
  1632.  
  1633. awkward_regulararray_getitem_next_at_64
  1634. ----------------------------------------------------
  1635.  
  1636. def awkward_regulararray_getitem_next_at_64(
  1637. tocarry: List[int], at: int, len: int, size: int
  1638. ):
  1639. return awkward_regulararray_getitem_next_at(tocarry, at, len, size)
  1640.  
  1641.  
  1642. awkward_regulararray_getitem_next_range
  1643. ----------------------------------------------------
  1644.  
  1645. for T in int:
  1646.  
  1647. def awkward_regulararray_getitem_next_range(
  1648. tocarry: List[T],
  1649. regular_start: int,
  1650. step: int,
  1651. len: int,
  1652. size: int,
  1653. nextsize: int,
  1654. ):
  1655. for i in range(len):
  1656. for j in range(nextsize):
  1657. tocarry[(i * nextsize) + j] = ((i * size) + regular_start) + (j * step)
  1658. return
  1659.  
  1660.  
  1661. awkward_regulararray_getitem_next_range_64
  1662. ----------------------------------------------------
  1663.  
  1664. def awkward_regulararray_getitem_next_range_64(
  1665. tocarry: List[int],
  1666. regular_start: int,
  1667. step: int,
  1668. len: int,
  1669. size: int,
  1670. nextsize: int,
  1671. ):
  1672. return awkward_regulararray_getitem_next_range(
  1673. tocarry, regular_start, step, len, size, nextsize
  1674. )
  1675.  
  1676.  
  1677. awkward_regulararray_getitem_next_range_spreadadvanced
  1678. ----------------------------------------------------
  1679.  
  1680. for T in int:
  1681.  
  1682. def awkward_regulararray_getitem_next_range_spreadadvanced(
  1683. toadvanced: List[T], fromadvanced: List[T], len: int, nextsize: int
  1684. ):
  1685. for i in range(len):
  1686. for j in range(nextsize):
  1687. toadvanced[(i * nextsize) + j] = fromadvanced[i]
  1688. return
  1689.  
  1690.  
  1691. awkward_regulararray_getitem_next_range_spreadadvanced_64
  1692. ----------------------------------------------------
  1693.  
  1694. def awkward_regulararray_getitem_next_range_spreadadvanced_64(
  1695. toadvanced: List[int], fromadvanced: List[int], len: int, nextsize: int
  1696. ):
  1697. return awkward_regulararray_getitem_next_range_spreadadvanced(
  1698. toadvanced, fromadvanced, len, nextsize
  1699. )
  1700.  
  1701.  
  1702. awkward_regulararray_getitem_next_array_regularize
  1703. ----------------------------------------------------
  1704.  
  1705. for T in int:
  1706.  
  1707. def awkward_regulararray_getitem_next_array_regularize(
  1708. toarray: List[T], fromarray: List[T], lenarray: int, size: int
  1709. ):
  1710. for j in range(lenarray):
  1711. toarray[j] = fromarray[j]
  1712. if toarray[j] < 0:
  1713. toarray[j] = size
  1714. if not (0 <= toarray[j]) and (toarray[j] < size):
  1715. raise ValueError("index out of range")
  1716. return
  1717.  
  1718.  
  1719. awkward_regulararray_getitem_next_array_regularize_64
  1720. ----------------------------------------------------
  1721.  
  1722. def awkward_regulararray_getitem_next_array_regularize_64(
  1723. toarray: List[int], fromarray: List[int], lenarray: int, size: int
  1724. ):
  1725. return awkward_regulararray_getitem_next_array_regularize(
  1726. toarray, fromarray, lenarray, size
  1727. )
  1728.  
  1729.  
  1730. awkward_regulararray_getitem_next_array
  1731. ----------------------------------------------------
  1732.  
  1733. for T in int:
  1734.  
  1735. def awkward_regulararray_getitem_next_array(
  1736. tocarry: List[T],
  1737. toadvanced: List[T],
  1738. fromarray: List[T],
  1739. len: int,
  1740. lenarray: int,
  1741. size: int,
  1742. ):
  1743. for i in range(len):
  1744. for j in range(lenarray):
  1745. tocarry[(i * lenarray) + j] = (i * size) + fromarray[j]
  1746. toadvanced[(i * lenarray) + j] = j
  1747. return
  1748.  
  1749.  
  1750. awkward_regulararray_getitem_next_array_64
  1751. ----------------------------------------------------
  1752.  
  1753. def awkward_regulararray_getitem_next_array_64(
  1754. tocarry: List[int],
  1755. toadvanced: List[int],
  1756. fromarray: List[int],
  1757. len: int,
  1758. lenarray: int,
  1759. size: int,
  1760. ):
  1761. return awkward_regulararray_getitem_next_array(
  1762. tocarry, toadvanced, fromarray, len, lenarray, size
  1763. )
  1764.  
  1765.  
  1766. awkward_regulararray_getitem_next_array_advanced
  1767. ----------------------------------------------------
  1768.  
  1769. for T in int:
  1770.  
  1771. def awkward_regulararray_getitem_next_array_advanced(
  1772. tocarry: List[T],
  1773. toadvanced: List[T],
  1774. fromadvanced: List[T],
  1775. fromarray: List[T],
  1776. len: int,
  1777. lenarray: int,
  1778. size: int,
  1779. ):
  1780. for i in range(len):
  1781. tocarry[i] = (i * size) + fromarray[fromadvanced[i]]
  1782. toadvanced[i] = i
  1783. return
  1784.  
  1785.  
  1786. awkward_regulararray_getitem_next_array_advanced_64
  1787. ----------------------------------------------------
  1788.  
  1789. def awkward_regulararray_getitem_next_array_advanced_64(
  1790. tocarry: List[int],
  1791. toadvanced: List[int],
  1792. fromadvanced: List[int],
  1793. fromarray: List[int],
  1794. len: int,
  1795. lenarray: int,
  1796. size: int,
  1797. ):
  1798. return awkward_regulararray_getitem_next_array_advanced(
  1799. tocarry, toadvanced, fromadvanced, fromarray, len, lenarray, size
  1800. )
  1801.  
  1802.  
  1803. awkward_regulararray_getitem_carry
  1804. ----------------------------------------------------
  1805.  
  1806. for T in int:
  1807.  
  1808. def awkward_regulararray_getitem_carry(
  1809. tocarry: List[T], fromcarry: List[T], lencarry: int, size: int
  1810. ):
  1811. for i in range(lencarry):
  1812. for j in range(size):
  1813. tocarry[(i * size) + j] = (fromcarry[i] * size) + j
  1814. return
  1815.  
  1816.  
  1817. awkward_regulararray_getitem_carry_64
  1818. ----------------------------------------------------
  1819.  
  1820. def awkward_regulararray_getitem_carry_64(
  1821. tocarry: List[int], fromcarry: List[int], lencarry: int, size: int
  1822. ):
  1823. return awkward_regulararray_getitem_carry(tocarry, fromcarry, lencarry, size)
  1824.  
  1825.  
  1826. awkward_indexedarray_numnull
  1827. ----------------------------------------------------
  1828.  
  1829. for C in int:
  1830.  
  1831. def awkward_indexedarray_numnull(
  1832. numnull: List[int], fromindex: List[C], indexoffset: int, lenindex: int
  1833. ):
  1834. numnull = 0
  1835. for i in range(lenindex):
  1836. if fromindex[indexoffset + i] < 0:
  1837. numnull = numnull + 1
  1838. return
  1839.  
  1840.  
  1841. awkward_indexedarray32_numnull
  1842. ----------------------------------------------------
  1843.  
  1844. def awkward_indexedarray32_numnull(
  1845. numnull: List[int], fromindex: List[int], indexoffset: int, lenindex: int
  1846. ):
  1847. return awkward_indexedarray_numnull(numnull, fromindex, indexoffset, lenindex)
  1848.  
  1849.  
  1850. awkward_indexedarrayU32_numnull
  1851. ----------------------------------------------------
  1852.  
  1853. def awkward_indexedarrayU32_numnull(
  1854. numnull: List[int], fromindex: List[int], indexoffset: int, lenindex: int
  1855. ):
  1856. return awkward_indexedarray_numnull(numnull, fromindex, indexoffset, lenindex)
  1857.  
  1858.  
  1859. awkward_indexedarray64_numnull
  1860. ----------------------------------------------------
  1861.  
  1862. def awkward_indexedarray64_numnull(
  1863. numnull: List[int], fromindex: List[int], indexoffset: int, lenindex: int
  1864. ):
  1865. return awkward_indexedarray_numnull(numnull, fromindex, indexoffset, lenindex)
  1866.  
  1867.  
  1868. awkward_indexedarray_getitem_nextcarry_outindex
  1869. ----------------------------------------------------
  1870.  
  1871. for C in int:
  1872. for T in int:
  1873.  
  1874. def awkward_indexedarray_getitem_nextcarry_outindex(
  1875. tocarry: List[T],
  1876. toindex: List[C],
  1877. fromindex: List[C],
  1878. indexoffset: int,
  1879. lenindex: int,
  1880. lencontent: int,
  1881. ):
  1882. k = 0
  1883. for i in range(lenindex):
  1884. j = fromindex[indexoffset + i]
  1885. if j >= lencontent:
  1886. raise ValueError("index out of range")
  1887. else:
  1888. if j < 0:
  1889. toindex[i] = -1
  1890. else:
  1891. tocarry[k] = j
  1892. toindex[i] = int(k)
  1893. k = k + 1
  1894. return
  1895.  
  1896.  
  1897. awkward_indexedarray32_getitem_nextcarry_outindex_64
  1898. ----------------------------------------------------
  1899.  
  1900. def awkward_indexedarray32_getitem_nextcarry_outindex_64(
  1901. tocarry: List[int],
  1902. toindex: List[int],
  1903. fromindex: List[int],
  1904. indexoffset: int,
  1905. lenindex: int,
  1906. lencontent: int,
  1907. ):
  1908. return awkward_indexedarray_getitem_nextcarry_outindex(
  1909. tocarry, toindex, fromindex, indexoffset, lenindex, lencontent
  1910. )
  1911.  
  1912.  
  1913. awkward_indexedarrayU32_getitem_nextcarry_outindex_64
  1914. ----------------------------------------------------
  1915.  
  1916. def awkward_indexedarrayU32_getitem_nextcarry_outindex_64(
  1917. tocarry: List[int],
  1918. toindex: List[int],
  1919. fromindex: List[int],
  1920. indexoffset: int,
  1921. lenindex: int,
  1922. lencontent: int,
  1923. ):
  1924. return awkward_indexedarray_getitem_nextcarry_outindex(
  1925. tocarry, toindex, fromindex, indexoffset, lenindex, lencontent
  1926. )
  1927.  
  1928.  
  1929. awkward_indexedarray64_getitem_nextcarry_outindex_64
  1930. ----------------------------------------------------
  1931.  
  1932. def awkward_indexedarray64_getitem_nextcarry_outindex_64(
  1933. tocarry: List[int],
  1934. toindex: List[int],
  1935. fromindex: List[int],
  1936. indexoffset: int,
  1937. lenindex: int,
  1938. lencontent: int,
  1939. ):
  1940. return awkward_indexedarray_getitem_nextcarry_outindex(
  1941. tocarry, toindex, fromindex, indexoffset, lenindex, lencontent
  1942. )
  1943.  
  1944.  
  1945. awkward_indexedarray_getitem_nextcarry_outindex_mask
  1946. ----------------------------------------------------
  1947.  
  1948. for C in int:
  1949. for T in int:
  1950.  
  1951. def awkward_indexedarray_getitem_nextcarry_outindex_mask(
  1952. tocarry: List[T],
  1953. toindex: List[T],
  1954. fromindex: List[C],
  1955. indexoffset: int,
  1956. lenindex: int,
  1957. lencontent: int,
  1958. ):
  1959. k = 0
  1960. for i in range(lenindex):
  1961. j = fromindex[indexoffset + i]
  1962. if j >= lencontent:
  1963. raise ValueError("index out of range")
  1964. else:
  1965. if j < 0:
  1966. toindex[i] = -1
  1967. else:
  1968. tocarry[k] = j
  1969. toindex[i] = int(k)
  1970. k = k + 1
  1971. return
  1972.  
  1973.  
  1974. awkward_indexedarray32_getitem_nextcarry_outindex_mask_64
  1975. ----------------------------------------------------
  1976.  
  1977. def awkward_indexedarray32_getitem_nextcarry_outindex_mask_64(
  1978. tocarry: List[int],
  1979. toindex: List[int],
  1980. fromindex: List[int],
  1981. indexoffset: int,
  1982. lenindex: int,
  1983. lencontent: int,
  1984. ):
  1985. return awkward_indexedarray_getitem_nextcarry_outindex_mask(
  1986. tocarry, toindex, fromindex, indexoffset, lenindex, lencontent
  1987. )
  1988.  
  1989.  
  1990. awkward_indexedarrayU32_getitem_nextcarry_outindex_mask_64
  1991. ----------------------------------------------------
  1992.  
  1993. def awkward_indexedarrayU32_getitem_nextcarry_outindex_mask_64(
  1994. tocarry: List[int],
  1995. toindex: List[int],
  1996. fromindex: List[int],
  1997. indexoffset: int,
  1998. lenindex: int,
  1999. lencontent: int,
  2000. ):
  2001. return awkward_indexedarray_getitem_nextcarry_outindex_mask(
  2002. tocarry, toindex, fromindex, indexoffset, lenindex, lencontent
  2003. )
  2004.  
  2005.  
  2006. awkward_indexedarray64_getitem_nextcarry_outindex_mask_64
  2007. ----------------------------------------------------
  2008.  
  2009. def awkward_indexedarray64_getitem_nextcarry_outindex_mask_64(
  2010. tocarry: List[int],
  2011. toindex: List[int],
  2012. fromindex: List[int],
  2013. indexoffset: int,
  2014. lenindex: int,
  2015. lencontent: int,
  2016. ):
  2017. return awkward_indexedarray_getitem_nextcarry_outindex_mask(
  2018. tocarry, toindex, fromindex, indexoffset, lenindex, lencontent
  2019. )
  2020.  
  2021.  
  2022. awkward_listoffsetarray_getitem_adjust_offsets
  2023. ----------------------------------------------------
  2024.  
  2025. for T in int:
  2026.  
  2027. def awkward_listoffsetarray_getitem_adjust_offsets(
  2028. tooffsets: List[T],
  2029. tononzero: List[T],
  2030. fromoffsets: List[T],
  2031. offsetsoffset: int,
  2032. length: int,
  2033. nonzero: List[T],
  2034. nonzerooffset: int,
  2035. nonzerolength: int,
  2036. ):
  2037. j = 0
  2038. tooffsets[0] = fromoffsets[offsetsoffset + 0]
  2039. for i in range(length):
  2040. slicestart = fromoffsets[offsetsoffset + i]
  2041. slicestop = fromoffsets[(offsetsoffset + i) + 1]
  2042. count = 0
  2043. while (j < nonzerolength) and (nonzero[nonzerooffset + j] < slicestop):
  2044. tononzero[j] = nonzero[nonzerooffset + j] - slicestart
  2045. j = j + 1
  2046. count = count + 1
  2047.  
  2048. tooffsets[i + 1] = tooffsets[i] + count
  2049. return
  2050.  
  2051.  
  2052. awkward_listoffsetarray_getitem_adjust_offsets_64
  2053. ----------------------------------------------------
  2054.  
  2055. def awkward_listoffsetarray_getitem_adjust_offsets_64(
  2056. tooffsets: List[int],
  2057. tononzero: List[int],
  2058. fromoffsets: List[int],
  2059. offsetsoffset: int,
  2060. length: int,
  2061. nonzero: List[int],
  2062. nonzerooffset: int,
  2063. nonzerolength: int,
  2064. ):
  2065. return awkward_listoffsetarray_getitem_adjust_offsets(
  2066. tooffsets,
  2067. tononzero,
  2068. fromoffsets,
  2069. offsetsoffset,
  2070. length,
  2071. nonzero,
  2072. nonzerooffset,
  2073. nonzerolength,
  2074. )
  2075.  
  2076.  
  2077. awkward_listoffsetarray_getitem_adjust_offsets_index
  2078. ----------------------------------------------------
  2079.  
  2080. for T in int:
  2081.  
  2082. def awkward_listoffsetarray_getitem_adjust_offsets_index(
  2083. tooffsets: List[T],
  2084. tononzero: List[T],
  2085. fromoffsets: List[T],
  2086. offsetsoffset: int,
  2087. length: int,
  2088. index: List[T],
  2089. indexoffset: int,
  2090. indexlength: int,
  2091. nonzero: List[T],
  2092. nonzerooffset: int,
  2093. nonzerolength: int,
  2094. originalmask: List[int],
  2095. maskoffset: int,
  2096. masklength: int,
  2097. ):
  2098. k = 0
  2099. tooffsets[0] = fromoffsets[offsetsoffset + 0]
  2100. for i in range(length):
  2101. slicestart = fromoffsets[offsetsoffset + i]
  2102. slicestop = fromoffsets[(offsetsoffset + i) + 1]
  2103. numnull = 0
  2104. j = slicestart
  2105. while j < slicestop:
  2106. numnull = 1 if originalmask[maskoffset + j] != 0 else 0
  2107. j = j + 1
  2108. nullcount = 0
  2109. count = 0
  2110. while (k < indexlength) and (
  2111. ((index[indexoffset + k] < 0) and (nullcount < numnull))
  2112. or (
  2113. (
  2114. (index[indexoffset + k] >= 0)
  2115. and (index[indexoffset + k] < nonzerolength)
  2116. )
  2117. and (nonzero[nonzerooffset + index[indexoffset + k]] < slicestop)
  2118. )
  2119. ):
  2120. if index[indexoffset + k] < 0:
  2121. nullcount = nullcount + 1
  2122. else:
  2123. j = index[indexoffset + k]
  2124. tononzero[j] = nonzero[nonzerooffset + j] - slicestart
  2125. k = k + 1
  2126. count = count + 1
  2127.  
  2128. tooffsets[i + 1] = tooffsets[i] + count
  2129. return
  2130.  
  2131.  
  2132. awkward_listoffsetarray_getitem_adjust_offsets_index_64
  2133. ----------------------------------------------------
  2134.  
  2135. def awkward_listoffsetarray_getitem_adjust_offsets_index_64(
  2136. tooffsets: List[int],
  2137. tononzero: List[int],
  2138. fromoffsets: List[int],
  2139. offsetsoffset: int,
  2140. length: int,
  2141. index: List[int],
  2142. indexoffset: int,
  2143. indexlength: int,
  2144. nonzero: List[int],
  2145. nonzerooffset: int,
  2146. nonzerolength: int,
  2147. originalmask: List[int],
  2148. maskoffset: int,
  2149. masklength: int,
  2150. ):
  2151. return awkward_listoffsetarray_getitem_adjust_offsets_index(
  2152. tooffsets,
  2153. tononzero,
  2154. fromoffsets,
  2155. offsetsoffset,
  2156. length,
  2157. index,
  2158. indexoffset,
  2159. indexlength,
  2160. nonzero,
  2161. nonzerooffset,
  2162. nonzerolength,
  2163. originalmask,
  2164. maskoffset,
  2165. masklength,
  2166. )
  2167.  
  2168.  
  2169. awkward_indexedarray_getitem_adjust_outindex
  2170. ----------------------------------------------------
  2171.  
  2172. for T in int:
  2173.  
  2174. def awkward_indexedarray_getitem_adjust_outindex(
  2175. tomask: List[int],
  2176. toindex: List[T],
  2177. tononzero: List[T],
  2178. fromindex: List[T],
  2179. fromindexoffset: int,
  2180. fromindexlength: int,
  2181. nonzero: List[T],
  2182. nonzerooffset: int,
  2183. nonzerolength: int,
  2184. ):
  2185. j = 0
  2186. k = 0
  2187. for i in range(fromindexlength):
  2188. fromval = fromindex[fromindexoffset + i]
  2189. tomask[i] = fromval < 0
  2190. if fromval < 0:
  2191. toindex[k] = -1
  2192. k = k + 1
  2193. else:
  2194. if (j < nonzerolength) and (fromval == nonzero[nonzerooffset + j]):
  2195. tononzero[j] = fromval + (k - j)
  2196. toindex[k] = j
  2197. j = j + 1
  2198. k = k + 1
  2199. return
  2200.  
  2201.  
  2202. awkward_indexedarray_getitem_adjust_outindex_64
  2203. ----------------------------------------------------
  2204.  
  2205. def awkward_indexedarray_getitem_adjust_outindex_64(
  2206. tomask: List[int],
  2207. toindex: List[int],
  2208. tononzero: List[int],
  2209. fromindex: List[int],
  2210. fromindexoffset: int,
  2211. fromindexlength: int,
  2212. nonzero: List[int],
  2213. nonzerooffset: int,
  2214. nonzerolength: int,
  2215. ):
  2216. return awkward_indexedarray_getitem_adjust_outindex(
  2217. tomask,
  2218. toindex,
  2219. tononzero,
  2220. fromindex,
  2221. fromindexoffset,
  2222. fromindexlength,
  2223. nonzero,
  2224. nonzerooffset,
  2225. nonzerolength,
  2226. )
  2227.  
  2228.  
  2229. awkward_indexedarray_getitem_nextcarry
  2230. ----------------------------------------------------
  2231.  
  2232. for C in int:
  2233. for T in int:
  2234.  
  2235. def awkward_indexedarray_getitem_nextcarry(
  2236. tocarry: List[T],
  2237. fromindex: List[C],
  2238. indexoffset: int,
  2239. lenindex: int,
  2240. lencontent: int,
  2241. ):
  2242. k = 0
  2243. for i in range(lenindex):
  2244. j = fromindex[indexoffset + i]
  2245. if (j < 0) or (j >= lencontent):
  2246. raise ValueError("index out of range")
  2247. else:
  2248. tocarry[k] = j
  2249. k = k + 1
  2250. return
  2251.  
  2252.  
  2253. awkward_indexedarray32_getitem_nextcarry_64
  2254. ----------------------------------------------------
  2255.  
  2256. def awkward_indexedarray32_getitem_nextcarry_64(
  2257. tocarry: List[int],
  2258. fromindex: List[int],
  2259. indexoffset: int,
  2260. lenindex: int,
  2261. lencontent: int,
  2262. ):
  2263. return awkward_indexedarray_getitem_nextcarry(
  2264. tocarry, fromindex, indexoffset, lenindex, lencontent
  2265. )
  2266.  
  2267.  
  2268. awkward_indexedarrayU32_getitem_nextcarry_64
  2269. ----------------------------------------------------
  2270.  
  2271. def awkward_indexedarrayU32_getitem_nextcarry_64(
  2272. tocarry: List[int],
  2273. fromindex: List[int],
  2274. indexoffset: int,
  2275. lenindex: int,
  2276. lencontent: int,
  2277. ):
  2278. return awkward_indexedarray_getitem_nextcarry(
  2279. tocarry, fromindex, indexoffset, lenindex, lencontent
  2280. )
  2281.  
  2282.  
  2283. awkward_indexedarray64_getitem_nextcarry_64
  2284. ----------------------------------------------------
  2285.  
  2286. def awkward_indexedarray64_getitem_nextcarry_64(
  2287. tocarry: List[int],
  2288. fromindex: List[int],
  2289. indexoffset: int,
  2290. lenindex: int,
  2291. lencontent: int,
  2292. ):
  2293. return awkward_indexedarray_getitem_nextcarry(
  2294. tocarry, fromindex, indexoffset, lenindex, lencontent
  2295. )
  2296.  
  2297.  
  2298. awkward_indexedarray_getitem_carry
  2299. ----------------------------------------------------
  2300.  
  2301. for C in int:
  2302. for T in int:
  2303.  
  2304. def awkward_indexedarray_getitem_carry(
  2305. toindex: List[C],
  2306. fromindex: List[C],
  2307. fromcarry: List[T],
  2308. indexoffset: int,
  2309. lenindex: int,
  2310. lencarry: int,
  2311. ):
  2312. for i in range(lencarry):
  2313. if fromcarry[i] >= lenindex:
  2314. raise ValueError("index out of range")
  2315. toindex[i] = int(fromindex[indexoffset + fromcarry[i]])
  2316. return
  2317.  
  2318.  
  2319. awkward_indexedarray32_getitem_carry_64
  2320. ----------------------------------------------------
  2321.  
  2322. def awkward_indexedarray32_getitem_carry_64(
  2323. toindex: List[int],
  2324. fromindex: List[int],
  2325. fromcarry: List[int],
  2326. indexoffset: int,
  2327. lenindex: int,
  2328. lencarry: int,
  2329. ):
  2330. return awkward_indexedarray_getitem_carry(
  2331. toindex, fromindex, fromcarry, indexoffset, lenindex, lencarry
  2332. )
  2333.  
  2334.  
  2335. awkward_indexedarrayU32_getitem_carry_64
  2336. ----------------------------------------------------
  2337.  
  2338. def awkward_indexedarrayU32_getitem_carry_64(
  2339. toindex: List[int],
  2340. fromindex: List[int],
  2341. fromcarry: List[int],
  2342. indexoffset: int,
  2343. lenindex: int,
  2344. lencarry: int,
  2345. ):
  2346. return awkward_indexedarray_getitem_carry(
  2347. toindex, fromindex, fromcarry, indexoffset, lenindex, lencarry
  2348. )
  2349.  
  2350.  
  2351. awkward_indexedarray64_getitem_carry_64
  2352. ----------------------------------------------------
  2353.  
  2354. def awkward_indexedarray64_getitem_carry_64(
  2355. toindex: List[int],
  2356. fromindex: List[int],
  2357. fromcarry: List[int],
  2358. indexoffset: int,
  2359. lenindex: int,
  2360. lencarry: int,
  2361. ):
  2362. return awkward_indexedarray_getitem_carry(
  2363. toindex, fromindex, fromcarry, indexoffset, lenindex, lencarry
  2364. )
  2365.  
  2366.  
  2367. awkward_unionarray_regular_index_getsize
  2368. ----------------------------------------------------
  2369.  
  2370. for C in int:
  2371.  
  2372. def awkward_unionarray_regular_index_getsize(
  2373. size: List[int], fromtags: List[C], tagsoffset: int, length: int
  2374. ):
  2375. size = 0
  2376. for i in range(length):
  2377. tag = int(fromtags[tagsoffset + i])
  2378. if size < tag:
  2379. size = tag
  2380. size = size + 1
  2381. return
  2382.  
  2383.  
  2384. awkward_unionarray8_regular_index_getsize
  2385. ----------------------------------------------------
  2386.  
  2387. def awkward_unionarray8_regular_index_getsize(
  2388. size: List[int], fromtags: List[int], tagsoffset: int, length: int
  2389. ):
  2390. return awkward_unionarray_regular_index_getsize(size, fromtags, tagsoffset, length)
  2391.  
  2392.  
  2393. awkward_unionarray_regular_index
  2394. ----------------------------------------------------
  2395.  
  2396. for C in int:
  2397. for I in int:
  2398.  
  2399. def awkward_unionarray_regular_index(
  2400. toindex: List[I],
  2401. current: List[I],
  2402. size: int,
  2403. fromtags: List[C],
  2404. tagsoffset: int,
  2405. length: int,
  2406. ):
  2407. count = 0
  2408. for k in range(size):
  2409. current[k] = 0
  2410. for i in range(length):
  2411. tag = fromtags[tagsoffset + i]
  2412. toindex[i] = current[tag]
  2413. current[tag] = current[tag] + 1
  2414. return
  2415.  
  2416.  
  2417. awkward_unionarray8_32_regular_index
  2418. ----------------------------------------------------
  2419.  
  2420. def awkward_unionarray8_32_regular_index(
  2421. toindex: List[int],
  2422. current: List[int],
  2423. size: int,
  2424. fromtags: List[int],
  2425. tagsoffset: int,
  2426. length: int,
  2427. ):
  2428. return awkward_unionarray_regular_index(
  2429. toindex, current, size, fromtags, tagsoffset, length
  2430. )
  2431.  
  2432.  
  2433. awkward_unionarray8_U32_regular_index
  2434. ----------------------------------------------------
  2435.  
  2436. def awkward_unionarray8_U32_regular_index(
  2437. toindex: List[int],
  2438. current: List[int],
  2439. size: int,
  2440. fromtags: List[int],
  2441. tagsoffset: int,
  2442. length: int,
  2443. ):
  2444. return awkward_unionarray_regular_index(
  2445. toindex, current, size, fromtags, tagsoffset, length
  2446. )
  2447.  
  2448.  
  2449. awkward_unionarray8_64_regular_index
  2450. ----------------------------------------------------
  2451.  
  2452. def awkward_unionarray8_64_regular_index(
  2453. toindex: List[int],
  2454. current: List[int],
  2455. size: int,
  2456. fromtags: List[int],
  2457. tagsoffset: int,
  2458. length: int,
  2459. ):
  2460. return awkward_unionarray_regular_index(
  2461. toindex, current, size, fromtags, tagsoffset, length
  2462. )
  2463.  
  2464.  
  2465. awkward_unionarray_project
  2466. ----------------------------------------------------
  2467.  
  2468. for T in int:
  2469. for C in int:
  2470. for I in int:
  2471.  
  2472. def awkward_unionarray_project(
  2473. lenout: List[int],
  2474. tocarry: List[T],
  2475. fromtags: List[C],
  2476. tagsoffset: int,
  2477. fromindex: List[I],
  2478. indexoffset: int,
  2479. length: int,
  2480. which: int,
  2481. ):
  2482. lenout = 0
  2483. for i in range(length):
  2484. if fromtags[tagsoffset + i] == which:
  2485. lenout
  2486. tocarry[lenout] = fromindex[indexoffset + i]
  2487. lenout = lenout + 1
  2488. return
  2489.  
  2490.  
  2491. awkward_unionarray8_32_project_64
  2492. ----------------------------------------------------
  2493.  
  2494. def awkward_unionarray8_32_project_64(
  2495. lenout: List[int],
  2496. tocarry: List[int],
  2497. fromtags: List[int],
  2498. tagsoffset: int,
  2499. fromindex: List[int],
  2500. indexoffset: int,
  2501. length: int,
  2502. which: int,
  2503. ):
  2504. return awkward_unionarray_project(
  2505. lenout, tocarry, fromtags, tagsoffset, fromindex, indexoffset, length, which
  2506. )
  2507.  
  2508.  
  2509. awkward_unionarray8_U32_project_64
  2510. ----------------------------------------------------
  2511.  
  2512. def awkward_unionarray8_U32_project_64(
  2513. lenout: List[int],
  2514. tocarry: List[int],
  2515. fromtags: List[int],
  2516. tagsoffset: int,
  2517. fromindex: List[int],
  2518. indexoffset: int,
  2519. length: int,
  2520. which: int,
  2521. ):
  2522. return awkward_unionarray_project(
  2523. lenout, tocarry, fromtags, tagsoffset, fromindex, indexoffset, length, which
  2524. )
  2525.  
  2526.  
  2527. awkward_unionarray8_64_project_64
  2528. ----------------------------------------------------
  2529.  
  2530. def awkward_unionarray8_64_project_64(
  2531. lenout: List[int],
  2532. tocarry: List[int],
  2533. fromtags: List[int],
  2534. tagsoffset: int,
  2535. fromindex: List[int],
  2536. indexoffset: int,
  2537. length: int,
  2538. which: int,
  2539. ):
  2540. return awkward_unionarray_project(
  2541. lenout, tocarry, fromtags, tagsoffset, fromindex, indexoffset, length, which
  2542. )
  2543.  
  2544.  
  2545. awkward_missing_repeat
  2546. ----------------------------------------------------
  2547.  
  2548. for T in int:
  2549.  
  2550. def awkward_missing_repeat(
  2551. outindex: List[T],
  2552. index: List[T],
  2553. indexoffset: int,
  2554. indexlength: int,
  2555. repetitions: int,
  2556. regularsize: int,
  2557. ):
  2558. for i in range(repetitions):
  2559. for j in range(indexlength):
  2560. base = index[indexoffset + j]
  2561. outindex[(i * indexlength) + j] = (
  2562. base + i * regularsize if base >= 0 else 0
  2563. )
  2564. return
  2565.  
  2566.  
  2567. awkward_missing_repeat_64
  2568. ----------------------------------------------------
  2569.  
  2570. def awkward_missing_repeat_64(
  2571. outindex: List[int],
  2572. index: List[int],
  2573. indexoffset: int,
  2574. indexlength: int,
  2575. repetitions: int,
  2576. regularsize: int,
  2577. ):
  2578. return awkward_missing_repeat(
  2579. outindex, index, indexoffset, indexlength, repetitions, regularsize
  2580. )
  2581.  
  2582.  
  2583. awkward_regulararray_getitem_jagged_expand
  2584. ----------------------------------------------------
  2585.  
  2586. for T in int:
  2587.  
  2588. def awkward_regulararray_getitem_jagged_expand(
  2589. multistarts: List[T],
  2590. multistops: List[T],
  2591. singleoffsets: List[T],
  2592. regularsize: int,
  2593. regularlength: int,
  2594. ):
  2595. for i in range(regularlength):
  2596. for j in range(regularsize):
  2597. multistarts[(i * regularsize) + j] = singleoffsets[j]
  2598. multistops[(i * regularsize) + j] = singleoffsets[j + 1]
  2599. return
  2600.  
  2601.  
  2602. awkward_regulararray_getitem_jagged_expand_64
  2603. ----------------------------------------------------
  2604.  
  2605. def awkward_regulararray_getitem_jagged_expand_64(
  2606. multistarts: List[int],
  2607. multistops: List[int],
  2608. singleoffsets: List[int],
  2609. regularsize: int,
  2610. regularlength: int,
  2611. ):
  2612. return awkward_regulararray_getitem_jagged_expand(
  2613. multistarts, multistops, singleoffsets, regularsize, regularlength
  2614. )
  2615.  
  2616.  
  2617. awkward_listarray_getitem_jagged_expand
  2618. ----------------------------------------------------
  2619.  
  2620. for C in int:
  2621. for T in int:
  2622.  
  2623. def awkward_listarray_getitem_jagged_expand(
  2624. multistarts: List[T],
  2625. multistops: List[T],
  2626. singleoffsets: List[T],
  2627. tocarry: List[T],
  2628. fromstarts: List[C],
  2629. fromstartsoffset: int,
  2630. fromstops: List[C],
  2631. fromstopsoffset: int,
  2632. jaggedsize: int,
  2633. length: int,
  2634. ):
  2635. for i in range(length):
  2636. start = fromstarts[fromstartsoffset + i]
  2637. stop = fromstops[fromstopsoffset + i]
  2638. if stop < start:
  2639. raise ValueError("stops[i] < starts[i]")
  2640. if (stop - start) != jaggedsize:
  2641. raise ValueError("cannot fit jagged slice into nested list")
  2642. for j in range(jaggedsize):
  2643. multistarts[(i * jaggedsize) + j] = singleoffsets[j]
  2644. multistops[(i * jaggedsize) + j] = singleoffsets[j + 1]
  2645. tocarry[(i * jaggedsize) + j] = start + j
  2646. return
  2647.  
  2648.  
  2649. awkward_listarray32_getitem_jagged_expand_64
  2650. ----------------------------------------------------
  2651.  
  2652. def awkward_listarray32_getitem_jagged_expand_64(
  2653. multistarts: List[int],
  2654. multistops: List[int],
  2655. singleoffsets: List[int],
  2656. tocarry: List[int],
  2657. fromstarts: List[int],
  2658. fromstartsoffset: int,
  2659. fromstops: List[int],
  2660. fromstopsoffset: int,
  2661. jaggedsize: int,
  2662. length: int,
  2663. ):
  2664. return awkward_listarray_getitem_jagged_expand(
  2665. multistarts,
  2666. multistops,
  2667. singleoffsets,
  2668. tocarry,
  2669. fromstarts,
  2670. fromstartsoffset,
  2671. fromstops,
  2672. fromstopsoffset,
  2673. jaggedsize,
  2674. length,
  2675. )
  2676.  
  2677.  
  2678. awkward_listarrayU32_getitem_jagged_expand_64
  2679. ----------------------------------------------------
  2680.  
  2681. def awkward_listarrayU32_getitem_jagged_expand_64(
  2682. multistarts: List[int],
  2683. multistops: List[int],
  2684. singleoffsets: List[int],
  2685. tocarry: List[int],
  2686. fromstarts: List[int],
  2687. fromstartsoffset: int,
  2688. fromstops: List[int],
  2689. fromstopsoffset: int,
  2690. jaggedsize: int,
  2691. length: int,
  2692. ):
  2693. return awkward_listarray_getitem_jagged_expand(
  2694. multistarts,
  2695. multistops,
  2696. singleoffsets,
  2697. tocarry,
  2698. fromstarts,
  2699. fromstartsoffset,
  2700. fromstops,
  2701. fromstopsoffset,
  2702. jaggedsize,
  2703. length,
  2704. )
  2705.  
  2706.  
  2707. awkward_listarray64_getitem_jagged_expand_64
  2708. ----------------------------------------------------
  2709.  
  2710. def awkward_listarray64_getitem_jagged_expand_64(
  2711. multistarts: List[int],
  2712. multistops: List[int],
  2713. singleoffsets: List[int],
  2714. tocarry: List[int],
  2715. fromstarts: List[int],
  2716. fromstartsoffset: int,
  2717. fromstops: List[int],
  2718. fromstopsoffset: int,
  2719. jaggedsize: int,
  2720. length: int,
  2721. ):
  2722. return awkward_listarray_getitem_jagged_expand(
  2723. multistarts,
  2724. multistops,
  2725. singleoffsets,
  2726. tocarry,
  2727. fromstarts,
  2728. fromstartsoffset,
  2729. fromstops,
  2730. fromstopsoffset,
  2731. jaggedsize,
  2732. length,
  2733. )
  2734.  
  2735.  
  2736. awkward_listarray_getitem_jagged_carrylen
  2737. ----------------------------------------------------
  2738.  
  2739. for T in int:
  2740.  
  2741. def awkward_listarray_getitem_jagged_carrylen(
  2742. carrylen: List[int],
  2743. slicestarts: List[T],
  2744. slicestartsoffset: int,
  2745. slicestops: List[T],
  2746. slicestopsoffset: int,
  2747. sliceouterlen: int,
  2748. ):
  2749. carrylen = 0
  2750. for i in range(sliceouterlen):
  2751. carrylen = carrylen + int(
  2752. slicestops[slicestopsoffset + i] - slicestarts[slicestartsoffset + i]
  2753. )
  2754. return
  2755.  
  2756.  
  2757. awkward_listarray_getitem_jagged_carrylen_64
  2758. ----------------------------------------------------
  2759.  
  2760. def awkward_listarray_getitem_jagged_carrylen_64(
  2761. carrylen: List[int],
  2762. slicestarts: List[int],
  2763. slicestartsoffset: int,
  2764. slicestops: List[int],
  2765. slicestopsoffset: int,
  2766. sliceouterlen: int,
  2767. ):
  2768. return awkward_listarray_getitem_jagged_carrylen(
  2769. carrylen,
  2770. slicestarts,
  2771. slicestartsoffset,
  2772. slicestops,
  2773. slicestopsoffset,
  2774. sliceouterlen,
  2775. )
  2776.  
  2777.  
  2778. awkward_listarray_getitem_jagged_apply
  2779. ----------------------------------------------------
  2780.  
  2781. for C in int:
  2782. for T in int:
  2783.  
  2784. def awkward_listarray_getitem_jagged_apply(
  2785. tooffsets: List[T],
  2786. tocarry: List[T],
  2787. slicestarts: List[T],
  2788. slicestartsoffset: int,
  2789. slicestops: List[T],
  2790. slicestopsoffset: int,
  2791. sliceouterlen: int,
  2792. sliceindex: List[T],
  2793. sliceindexoffset: int,
  2794. sliceinnerlen: int,
  2795. fromstarts: List[C],
  2796. fromstartsoffset: int,
  2797. fromstops: List[C],
  2798. fromstopsoffset: int,
  2799. contentlen: int,
  2800. ):
  2801. k = 0
  2802. for i in range(sliceouterlen):
  2803. slicestart = slicestarts[slicestartsoffset + i]
  2804. slicestop = slicestops[slicestopsoffset + i]
  2805. tooffsets[i] = int(k)
  2806. if slicestart != slicestop:
  2807. if slicestop < slicestart:
  2808. raise ValueError("jagged slice's stops[i] < starts[i]")
  2809. if slicestop > sliceinnerlen:
  2810. raise ValueError(
  2811. "jagged slice's offsets extend beyond its content"
  2812. )
  2813. start = int(fromstarts[fromstartsoffset + i])
  2814. stop = int(fromstops[fromstopsoffset + i])
  2815. if stop < start:
  2816. raise ValueError("stops[i] < starts[i]")
  2817. if (start != stop) and (stop > contentlen):
  2818. raise ValueError("stops[i] > len(content)")
  2819. count = stop - start
  2820. j = slicestart
  2821. while j < slicestop:
  2822. index = int(sliceindex[sliceindexoffset + j])
  2823. if index < 0:
  2824. index = count
  2825. if not (0 <= index) and (index < count):
  2826. raise ValueError("index out of range")
  2827. tocarry[k] = start + index
  2828. k = k + 1
  2829. j = j + 1
  2830. tooffsets[i + 1] = int(k)
  2831. return
  2832.  
  2833.  
  2834. awkward_listarray32_getitem_jagged_apply_64
  2835. ----------------------------------------------------
  2836.  
  2837. def awkward_listarray32_getitem_jagged_apply_64(
  2838. tooffsets: List[int],
  2839. tocarry: List[int],
  2840. slicestarts: List[int],
  2841. slicestartsoffset: int,
  2842. slicestops: List[int],
  2843. slicestopsoffset: int,
  2844. sliceouterlen: int,
  2845. sliceindex: List[int],
  2846. sliceindexoffset: int,
  2847. sliceinnerlen: int,
  2848. fromstarts: List[int],
  2849. fromstartsoffset: int,
  2850. fromstops: List[int],
  2851. fromstopsoffset: int,
  2852. contentlen: int,
  2853. ):
  2854. return awkward_listarray_getitem_jagged_apply(
  2855. tooffsets,
  2856. tocarry,
  2857. slicestarts,
  2858. slicestartsoffset,
  2859. slicestops,
  2860. slicestopsoffset,
  2861. sliceouterlen,
  2862. sliceindex,
  2863. sliceindexoffset,
  2864. sliceinnerlen,
  2865. fromstarts,
  2866. fromstartsoffset,
  2867. fromstops,
  2868. fromstopsoffset,
  2869. contentlen,
  2870. )
  2871.  
  2872.  
  2873. awkward_listarrayU32_getitem_jagged_apply_64
  2874. ----------------------------------------------------
  2875.  
  2876. def awkward_listarrayU32_getitem_jagged_apply_64(
  2877. tooffsets: List[int],
  2878. tocarry: List[int],
  2879. slicestarts: List[int],
  2880. slicestartsoffset: int,
  2881. slicestops: List[int],
  2882. slicestopsoffset: int,
  2883. sliceouterlen: int,
  2884. sliceindex: List[int],
  2885. sliceindexoffset: int,
  2886. sliceinnerlen: int,
  2887. fromstarts: List[int],
  2888. fromstartsoffset: int,
  2889. fromstops: List[int],
  2890. fromstopsoffset: int,
  2891. contentlen: int,
  2892. ):
  2893. return awkward_listarray_getitem_jagged_apply(
  2894. tooffsets,
  2895. tocarry,
  2896. slicestarts,
  2897. slicestartsoffset,
  2898. slicestops,
  2899. slicestopsoffset,
  2900. sliceouterlen,
  2901. sliceindex,
  2902. sliceindexoffset,
  2903. sliceinnerlen,
  2904. fromstarts,
  2905. fromstartsoffset,
  2906. fromstops,
  2907. fromstopsoffset,
  2908. contentlen,
  2909. )
  2910.  
  2911.  
  2912. awkward_listarray64_getitem_jagged_apply_64
  2913. ----------------------------------------------------
  2914.  
  2915. def awkward_listarray64_getitem_jagged_apply_64(
  2916. tooffsets: List[int],
  2917. tocarry: List[int],
  2918. slicestarts: List[int],
  2919. slicestartsoffset: int,
  2920. slicestops: List[int],
  2921. slicestopsoffset: int,
  2922. sliceouterlen: int,
  2923. sliceindex: List[int],
  2924. sliceindexoffset: int,
  2925. sliceinnerlen: int,
  2926. fromstarts: List[int],
  2927. fromstartsoffset: int,
  2928. fromstops: List[int],
  2929. fromstopsoffset: int,
  2930. contentlen: int,
  2931. ):
  2932. return awkward_listarray_getitem_jagged_apply(
  2933. tooffsets,
  2934. tocarry,
  2935. slicestarts,
  2936. slicestartsoffset,
  2937. slicestops,
  2938. slicestopsoffset,
  2939. sliceouterlen,
  2940. sliceindex,
  2941. sliceindexoffset,
  2942. sliceinnerlen,
  2943. fromstarts,
  2944. fromstartsoffset,
  2945. fromstops,
  2946. fromstopsoffset,
  2947. contentlen,
  2948. )
  2949.  
  2950.  
  2951. awkward_listarray_getitem_jagged_numvalid
  2952. ----------------------------------------------------
  2953.  
  2954. for T in int:
  2955.  
  2956. def awkward_listarray_getitem_jagged_numvalid(
  2957. numvalid: List[int],
  2958. slicestarts: List[T],
  2959. slicestartsoffset: int,
  2960. slicestops: List[T],
  2961. slicestopsoffset: int,
  2962. length: int,
  2963. missing: List[T],
  2964. missingoffset: int,
  2965. missinglength: int,
  2966. ):
  2967. numvalid = 0
  2968. for i in range(length):
  2969. slicestart = slicestarts[slicestartsoffset + i]
  2970. slicestop = slicestops[slicestopsoffset + i]
  2971. if slicestart != slicestop:
  2972. if slicestop < slicestart:
  2973. raise ValueError("jagged slice's stops[i] < starts[i]")
  2974. if slicestop > missinglength:
  2975. raise ValueError("jagged slice's offsets extend beyond its content")
  2976. j = slicestart
  2977. while j < slicestop:
  2978. numvalid = numvalid + 1 if missing[missingoffset + j] >= 0 else 0
  2979. j = j + 1
  2980. return
  2981.  
  2982.  
  2983. awkward_listarray_getitem_jagged_numvalid_64
  2984. ----------------------------------------------------
  2985.  
  2986. def awkward_listarray_getitem_jagged_numvalid_64(
  2987. numvalid: List[int],
  2988. slicestarts: List[int],
  2989. slicestartsoffset: int,
  2990. slicestops: List[int],
  2991. slicestopsoffset: int,
  2992. length: int,
  2993. missing: List[int],
  2994. missingoffset: int,
  2995. missinglength: int,
  2996. ):
  2997. return awkward_listarray_getitem_jagged_numvalid(
  2998. numvalid,
  2999. slicestarts,
  3000. slicestartsoffset,
  3001. slicestops,
  3002. slicestopsoffset,
  3003. length,
  3004. missing,
  3005. missingoffset,
  3006. missinglength,
  3007. )
  3008.  
  3009.  
  3010. awkward_listarray_getitem_jagged_shrink
  3011. ----------------------------------------------------
  3012.  
  3013. for T in int:
  3014.  
  3015. def awkward_listarray_getitem_jagged_shrink(
  3016. tocarry: List[T],
  3017. tosmalloffsets: List[T],
  3018. tolargeoffsets: List[T],
  3019. slicestarts: List[T],
  3020. slicestartsoffset: int,
  3021. slicestops: List[T],
  3022. slicestopsoffset: int,
  3023. length: int,
  3024. missing: List[T],
  3025. missingoffset: int,
  3026. ):
  3027. k = 0
  3028. if length == 0:
  3029. tosmalloffsets[0] = 0
  3030. tolargeoffsets[0] = 0
  3031. else:
  3032. tosmalloffsets[0] = slicestarts[slicestartsoffset + 0]
  3033. tolargeoffsets[0] = slicestarts[slicestartsoffset + 0]
  3034. for i in range(length):
  3035. slicestart = slicestarts[slicestartsoffset + i]
  3036. slicestop = slicestops[slicestopsoffset + i]
  3037. if slicestart != slicestop:
  3038. smallcount = 0
  3039. j = slicestart
  3040. while j < slicestop:
  3041. if missing[missingoffset + j] >= 0:
  3042. tocarry[k] = j
  3043. k = k + 1
  3044. smallcount = smallcount + 1
  3045. j = j + 1
  3046. tosmalloffsets[i + 1] = tosmalloffsets[i] + smallcount
  3047. else:
  3048. tosmalloffsets[i + 1] = tosmalloffsets[i]
  3049. tolargeoffsets[i + 1] = tolargeoffsets[i] + (slicestop - slicestart)
  3050. return
  3051.  
  3052.  
  3053. awkward_listarray_getitem_jagged_shrink_64
  3054. ----------------------------------------------------
  3055.  
  3056. def awkward_listarray_getitem_jagged_shrink_64(
  3057. tocarry: List[int],
  3058. tosmalloffsets: List[int],
  3059. tolargeoffsets: List[int],
  3060. slicestarts: List[int],
  3061. slicestartsoffset: int,
  3062. slicestops: List[int],
  3063. slicestopsoffset: int,
  3064. length: int,
  3065. missing: List[int],
  3066. missingoffset: int,
  3067. ):
  3068. return awkward_listarray_getitem_jagged_shrink(
  3069. tocarry,
  3070. tosmalloffsets,
  3071. tolargeoffsets,
  3072. slicestarts,
  3073. slicestartsoffset,
  3074. slicestops,
  3075. slicestopsoffset,
  3076. length,
  3077. missing,
  3078. missingoffset,
  3079. )
  3080.  
  3081.  
  3082. awkward_listarray_getitem_jagged_descend
  3083. ----------------------------------------------------
  3084.  
  3085. for C in int:
  3086. for T in int:
  3087.  
  3088. def awkward_listarray_getitem_jagged_descend(
  3089. tooffsets: List[T],
  3090. slicestarts: List[T],
  3091. slicestartsoffset: int,
  3092. slicestops: List[T],
  3093. slicestopsoffset: int,
  3094. sliceouterlen: int,
  3095. fromstarts: List[C],
  3096. fromstartsoffset: int,
  3097. fromstops: List[C],
  3098. fromstopsoffset: int,
  3099. ):
  3100. if sliceouterlen == 0:
  3101. tooffsets[0] = 0
  3102. else:
  3103. tooffsets[0] = slicestarts[slicestartsoffset + 0]
  3104. for i in range(sliceouterlen):
  3105. slicecount = int(
  3106. slicestops[slicestopsoffset + i]
  3107. - slicestarts[slicestartsoffset + i]
  3108. )
  3109. count = int(
  3110. fromstops[fromstopsoffset + i] - fromstarts[fromstartsoffset + i]
  3111. )
  3112. if slicecount != count:
  3113. raise ValueError(
  3114. "jagged slice inner length differs from array inner length"
  3115. )
  3116. tooffsets[i + 1] = tooffsets[i] + int(count)
  3117. return
  3118.  
  3119.  
  3120. awkward_listarray32_getitem_jagged_descend_64
  3121. ----------------------------------------------------
  3122.  
  3123. def awkward_listarray32_getitem_jagged_descend_64(
  3124. tooffsets: List[int],
  3125. slicestarts: List[int],
  3126. slicestartsoffset: int,
  3127. slicestops: List[int],
  3128. slicestopsoffset: int,
  3129. sliceouterlen: int,
  3130. fromstarts: List[int],
  3131. fromstartsoffset: int,
  3132. fromstops: List[int],
  3133. fromstopsoffset: int,
  3134. ):
  3135. return awkward_listarray_getitem_jagged_descend(
  3136. tooffsets,
  3137. slicestarts,
  3138. slicestartsoffset,
  3139. slicestops,
  3140. slicestopsoffset,
  3141. sliceouterlen,
  3142. fromstarts,
  3143. fromstartsoffset,
  3144. fromstops,
  3145. fromstopsoffset,
  3146. )
  3147.  
  3148.  
  3149. awkward_listarrayU32_getitem_jagged_descend_64
  3150. ----------------------------------------------------
  3151.  
  3152. def awkward_listarrayU32_getitem_jagged_descend_64(
  3153. tooffsets: List[int],
  3154. slicestarts: List[int],
  3155. slicestartsoffset: int,
  3156. slicestops: List[int],
  3157. slicestopsoffset: int,
  3158. sliceouterlen: int,
  3159. fromstarts: List[int],
  3160. fromstartsoffset: int,
  3161. fromstops: List[int],
  3162. fromstopsoffset: int,
  3163. ):
  3164. return awkward_listarray_getitem_jagged_descend(
  3165. tooffsets,
  3166. slicestarts,
  3167. slicestartsoffset,
  3168. slicestops,
  3169. slicestopsoffset,
  3170. sliceouterlen,
  3171. fromstarts,
  3172. fromstartsoffset,
  3173. fromstops,
  3174. fromstopsoffset,
  3175. )
  3176.  
  3177.  
  3178. awkward_listarray64_getitem_jagged_descend_64
  3179. ----------------------------------------------------
  3180.  
  3181. def awkward_listarray64_getitem_jagged_descend_64(
  3182. tooffsets: List[int],
  3183. slicestarts: List[int],
  3184. slicestartsoffset: int,
  3185. slicestops: List[int],
  3186. slicestopsoffset: int,
  3187. sliceouterlen: int,
  3188. fromstarts: List[int],
  3189. fromstartsoffset: int,
  3190. fromstops: List[int],
  3191. fromstopsoffset: int,
  3192. ):
  3193. return awkward_listarray_getitem_jagged_descend(
  3194. tooffsets,
  3195. slicestarts,
  3196. slicestartsoffset,
  3197. slicestops,
  3198. slicestopsoffset,
  3199. sliceouterlen,
  3200. fromstarts,
  3201. fromstartsoffset,
  3202. fromstops,
  3203. fromstopsoffset,
  3204. )
  3205.  
  3206.  
  3207. awkward_index8_getitem_at_nowrap
  3208. ----------------------------------------------------
  3209.  
  3210. def awkward_index8_getitem_at_nowrap(ptr: List[int], offset: int, at: int):
  3211. return ptr[offset + at]
  3212.  
  3213.  
  3214. awkward_indexU8_getitem_at_nowrap
  3215. ----------------------------------------------------
  3216.  
  3217. def awkward_indexU8_getitem_at_nowrap(ptr: List[int], offset: int, at: int):
  3218. return ptr[offset + at]
  3219.  
  3220.  
  3221. awkward_index32_getitem_at_nowrap
  3222. ----------------------------------------------------
  3223.  
  3224. def awkward_index32_getitem_at_nowrap(ptr: List[int], offset: int, at: int):
  3225. return ptr[offset + at]
  3226.  
  3227.  
  3228. awkward_indexU32_getitem_at_nowrap
  3229. ----------------------------------------------------
  3230.  
  3231. def awkward_indexU32_getitem_at_nowrap(ptr: List[int], offset: int, at: int):
  3232. return ptr[offset + at]
  3233.  
  3234.  
  3235. awkward_index64_getitem_at_nowrap
  3236. ----------------------------------------------------
  3237.  
  3238. def awkward_index64_getitem_at_nowrap(ptr: List[int], offset: int, at: int):
  3239. return ptr[offset + at]
  3240.  
  3241.  
  3242. awkward_index8_setitem_at_nowrap
  3243. ----------------------------------------------------
  3244.  
  3245. def awkward_index8_setitem_at_nowrap(ptr: List[int], offset: int, at: int, value: int):
  3246. ptr[offset + at] = value
  3247.  
  3248.  
  3249. awkward_indexU8_setitem_at_nowrap
  3250. ----------------------------------------------------
  3251.  
  3252. def awkward_indexU8_setitem_at_nowrap(ptr: List[int], offset: int, at: int, value: int):
  3253. ptr[offset + at] = value
  3254.  
  3255.  
  3256. awkward_index32_setitem_at_nowrap
  3257. ----------------------------------------------------
  3258.  
  3259. def awkward_index32_setitem_at_nowrap(ptr: List[int], offset: int, at: int, value: int):
  3260. ptr[offset + at] = value
  3261.  
  3262.  
  3263. awkward_indexU32_setitem_at_nowrap
  3264. ----------------------------------------------------
  3265.  
  3266. def awkward_indexU32_setitem_at_nowrap(
  3267. ptr: List[int], offset: int, at: int, value: int
  3268. ):
  3269. ptr[offset + at] = value
  3270.  
  3271.  
  3272. awkward_index64_setitem_at_nowrap
  3273. ----------------------------------------------------
  3274.  
  3275. def awkward_index64_setitem_at_nowrap(ptr: List[int], offset: int, at: int, value: int):
  3276. ptr[offset + at] = value
  3277.  
  3278.  
  3279. awkward_bytemaskedarray_getitem_carry
  3280. ----------------------------------------------------
  3281.  
  3282. def awkward_bytemaskedarray_getitem_carry(
  3283. tomask: List[int],
  3284. frommask: List[int],
  3285. frommaskoffset: int,
  3286. lenmask: int,
  3287. fromcarry: List[T],
  3288. lencarry: int,
  3289. ):
  3290. for i in range(lencarry):
  3291. if fromcarry[i] >= lenmask:
  3292. raise ValueError("index out of range")
  3293. tomask[i] = frommask[frommaskoffset + fromcarry[i]]
  3294. return
  3295.  
  3296.  
  3297. awkward_bytemaskedarray_getitem_carry_64
  3298. ----------------------------------------------------
  3299.  
  3300. def awkward_bytemaskedarray_getitem_carry_64(
  3301. tomask: List[int],
  3302. frommask: List[int],
  3303. frommaskoffset: int,
  3304. lenmask: int,
  3305. fromcarry: List[int],
  3306. lencarry: int,
  3307. ):
  3308. return awkward_bytemaskedarray_getitem_carry(
  3309. tomask, frommask, frommaskoffset, lenmask, fromcarry, lencarry
  3310. )
  3311.  
  3312.  
  3313. awkward_bytemaskedarray_numnull
  3314. ----------------------------------------------------
  3315.  
  3316. def awkward_bytemaskedarray_numnull(
  3317. numnull: List[int], mask: List[int], maskoffset: int, length: int, validwhen: bool
  3318. ):
  3319. numnull = 0
  3320. for i in range(length):
  3321. if (mask[maskoffset + i] != 0) != validwhen:
  3322. numnull = numnull + 1
  3323. return
  3324.  
  3325.  
  3326. awkward_bytemaskedarray_getitem_nextcarry
  3327. ----------------------------------------------------
  3328.  
  3329. for T in int:
  3330.  
  3331. def awkward_bytemaskedarray_getitem_nextcarry(
  3332. tocarry: List[T], mask: List[int], maskoffset: int, length: int, validwhen: bool
  3333. ):
  3334. k = 0
  3335. for i in range(length):
  3336. if (mask[maskoffset + i] != 0) == validwhen:
  3337. tocarry[k] = i
  3338. k = k + 1
  3339. return
  3340.  
  3341.  
  3342. awkward_bytemaskedarray_getitem_nextcarry_64
  3343. ----------------------------------------------------
  3344.  
  3345. def awkward_bytemaskedarray_getitem_nextcarry_64(
  3346. tocarry: List[int], mask: List[int], maskoffset: int, length: int, validwhen: bool
  3347. ):
  3348. return awkward_bytemaskedarray_getitem_nextcarry(
  3349. tocarry, mask, maskoffset, length, validwhen
  3350. )
  3351.  
  3352.  
  3353. awkward_bytemaskedarray_getitem_nextcarry_outindex
  3354. ----------------------------------------------------
  3355.  
  3356. for T in int:
  3357.  
  3358. def awkward_bytemaskedarray_getitem_nextcarry_outindex(
  3359. tocarry: List[T],
  3360. toindex: List[T],
  3361. mask: List[int],
  3362. maskoffset: int,
  3363. length: int,
  3364. validwhen: bool,
  3365. ):
  3366. k = 0
  3367. for i in range(length):
  3368. if (mask[maskoffset + i] != 0) == validwhen:
  3369. tocarry[k] = i
  3370. toindex[i] = int(k)
  3371. k = k + 1
  3372. else:
  3373. toindex[i] = -1
  3374. return
  3375.  
  3376.  
  3377. awkward_bytemaskedarray_getitem_nextcarry_outindex_64
  3378. ----------------------------------------------------
  3379.  
  3380. def awkward_bytemaskedarray_getitem_nextcarry_outindex_64(
  3381. tocarry: List[int],
  3382. toindex: List[int],
  3383. mask: List[int],
  3384. maskoffset: int,
  3385. length: int,
  3386. validwhen: bool,
  3387. ):
  3388. return awkward_bytemaskedarray_getitem_nextcarry_outindex(
  3389. tocarry, toindex, mask, maskoffset, length, validwhen
  3390. )
  3391.  
  3392.  
  3393. awkward_bytemaskedarray_toindexedarray
  3394. ----------------------------------------------------
  3395.  
  3396. for T in int:
  3397.  
  3398. def awkward_bytemaskedarray_toindexedarray(
  3399. toindex: List[T], mask: List[int], maskoffset: int, length: int, validwhen: bool
  3400. ):
  3401. for i in range(length):
  3402. toindex[i] = i if (mask[maskoffset + i] != 0) == validwhen else -1
  3403. return
  3404.  
  3405.  
  3406. awkward_bytemaskedarray_toindexedarray_64
  3407. ----------------------------------------------------
  3408.  
  3409. def awkward_bytemaskedarray_toindexedarray_64(
  3410. toindex: List[int], mask: List[int], maskoffset: int, length: int, validwhen: bool
  3411. ):
  3412. return awkward_bytemaskedarray_toindexedarray(
  3413. toindex, mask, maskoffset, length, validwhen
  3414. )
Add Comment
Please, Sign In to add comment