.. _program_listing_file_src_tensors_memory_piece.h: Program Listing for File memory_piece.h ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``src/tensors/memory_piece.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "common/definitions.h" #include namespace marian { class MemoryPiece { private: uint8_t* data_; size_t size_; ENABLE_INTRUSIVE_PTR(MemoryPiece) // Contructor is private, use MemoryPiece::New(...) MemoryPiece(uint8_t* data, size_t size) : data_(data), size_(size) {} public: // Use this whenever pointing to MemoryPiece typedef IPtr PtrType; // Use this whenever creating a pointer to MemoryPiece template static PtrType New(Args&& ...args) { return PtrType(new MemoryPiece(std::forward(args)...)); } uint8_t* data() const { return data_; } uint8_t* data() { return data_; } template T* data() const { return (T*)data_; } template T* data() { return (T*)data_; } size_t size() const { return size_; } void set(uint8_t* data, size_t size) { data_ = data; size_ = size; } void setPtr(uint8_t* data) { data_ = data; } friend std::ostream& operator<<(std::ostream& out, const MemoryPiece mp) { out << "MemoryPiece - ptr: " << std::hex << (size_t)mp.data() << std::dec << " size: " << mp.size(); return out; } }; } // namespace marian