|
48 | 48 | import logging |
49 | 49 | from typing import Callable, Optional |
50 | 50 |
|
51 | | -from .typeutils import ( |
52 | | - allocate_on_buffer, |
53 | | - dispatch_arg, |
54 | | - Info, |
55 | | - _to_slot_size, |
56 | | - _is_dynamic, |
57 | | - default_conf, |
58 | | -) |
59 | | - |
60 | | -from .general import Print |
61 | | -from .scalar import Int64 |
62 | 51 | from .array import Array |
63 | | -from .context import Source, Arg, Kernel |
64 | | -from .context_cpu import ContextCpu |
| 52 | +from .context import Source |
| 53 | +from .scalar import Int64 |
| 54 | +from .typeutils import (Info, _to_slot_size, allocate_on_buffer, default_conf, |
| 55 | + dispatch_arg) |
65 | 56 |
|
66 | 57 | log = logging.getLogger(__name__) |
67 | 58 |
|
@@ -307,24 +298,28 @@ def _to_buffer(cls, buffer, offset, value, info=None): |
307 | 298 | buffer.update_from_xbuffer( |
308 | 299 | offset, value._buffer, value._offset, value._size |
309 | 300 | ) |
310 | | - else: # value must be a dict, again potential disctructive |
311 | | - if info is None: |
312 | | - info = cls._inspect_args(value) |
313 | | - if cls._size is None: |
314 | | - Int64._to_buffer(buffer, offset, info.size) |
315 | | - if hasattr( |
316 | | - info, "_offsets" |
317 | | - ): # if it has a least two dynamic fields |
318 | | - cls._set_offsets(buffer, offset, info._offsets) |
319 | | - extra = getattr(info, "extra", {}) |
320 | | - for field in cls._fields: |
321 | | - fvalue = field.value_from_args(value) |
322 | | - if field.is_reference: |
323 | | - foffset = offset + info._offsets[field.index] |
324 | | - else: |
325 | | - foffset = offset + field.offset |
326 | | - finfo = extra.get(field.index) |
327 | | - field.ftype._to_buffer(buffer, foffset, fvalue, finfo) |
| 301 | + return |
| 302 | + |
| 303 | + if info is None: |
| 304 | + info = cls._inspect_args(value) |
| 305 | + |
| 306 | + if cls._size is None: |
| 307 | + Int64._to_buffer(buffer, offset, info.size) |
| 308 | + |
| 309 | + if hasattr( |
| 310 | + info, "_offsets" |
| 311 | + ): # if it has at least two dynamic fields |
| 312 | + cls._set_offsets(buffer, offset, info._offsets) |
| 313 | + |
| 314 | + extra = getattr(info, "extra", {}) |
| 315 | + for field in cls._fields: |
| 316 | + fvalue = field.value_from_args(value) |
| 317 | + if field.is_reference: |
| 318 | + foffset = offset + info._offsets[field.index] |
| 319 | + else: |
| 320 | + foffset = offset + field.offset |
| 321 | + finfo = extra.get(field.index) |
| 322 | + field.ftype._to_buffer(buffer, foffset, fvalue, finfo) |
328 | 323 |
|
329 | 324 | def _update(self, value): |
330 | 325 | # check if direct copy is possible |
|
0 commit comments