| 240 | |
| 241 | template <class Trait> |
| 242 | TensorStorage<Trait> TensorStorage<Trait>::sub(ptrdiff_t offset) const { |
| 243 | ptr(); // apply lazy resize |
| 244 | ptrdiff_t toff = offset + m_offset; |
| 245 | if (offset == static_cast<ptrdiff_t>(m_size)) { |
| 246 | return {false, m_comp_node, 0, 0, 0, RawStorage{}}; |
| 247 | } |
| 248 | mgb_assert( |
| 249 | toff >= 0 && offset < static_cast<ptrdiff_t>(m_size), |
| 250 | "bad subtensor: offset=%td m_offset=%zu m_size=%zu", offset, m_offset, |
| 251 | m_size); |
| 252 | return {false, |
| 253 | m_comp_node, |
| 254 | m_size - offset, |
| 255 | m_capacity - offset, |
| 256 | static_cast<size_t>(toff), |
| 257 | m_data, |
| 258 | m_ref_ptr}; |
| 259 | } |
| 260 | |
| 261 | template <class Trait> |
| 262 | dt_byte* TensorStorage<Trait>::apply_lazy_and_get_ptr() { |
no outgoing calls