| 
134 | 134 | /*  | 
135 | 135 |  * NeuralNetworkBuffer - NeuralNetworkBuffer  | 
136 | 136 |  */  | 
137 |  | -NeuralNetworkBufferInformation::NeuralNetworkBufferInformation(const std::string &bufferFilePath, NNBuffer::bufferMode mode)  | 
 | 137 | +NeuralNetworkBufferInformation::NeuralNetworkBufferInformation(const std::string &bufferFilePath, NNBuffer::BufferMode mode)  | 
138 | 138 |     : nnBuffer(std::make_unique<NNBuffer::NeuralNetworkBuffer>(bufferFilePath, mode))  | 
139 | 139 | {  | 
140 | 140 | }  | 
 | 
149 | 149 |  * Writes given buffer into file  | 
150 | 150 |  * Returns offset from the beginning of buffer  | 
151 | 151 |  */  | 
152 |  | -inline u_int64_t NeuralNetworkBufferInformation::addBuffer(const std::vector<float> &buffer) {  | 
153 |  | -    return nnBuffer->addBuffer(buffer);  | 
 | 152 | +template <typename T>  | 
 | 153 | +inline u_int64_t NeuralNetworkBufferInformation::addBuffer(const std::vector<T>& buffer) {  | 
 | 154 | +    return nnBuffer->AddBuffer(buffer);  | 
154 | 155 | }  | 
155 | 156 | 
 
  | 
156 | 157 | /*  | 
157 | 158 |  * NeuralNetworkBufferInformation - getBuffer  | 
158 | 159 |  * Reads buffer from given offset and of given size and writes to data  | 
159 | 160 |  */  | 
160 |  | -inline std::vector<float> NeuralNetworkBufferInformation::getBuffer(const u_int64_t offset) {  | 
 | 161 | +template <typename T>  | 
 | 162 | +inline std::vector<T> NeuralNetworkBufferInformation::getBuffer(const u_int64_t offset) {  | 
161 | 163 |     // TODO: Explore Pybind11 Opaque to pass vector by reference  | 
162 |  | -    std::vector<float> buffer;  | 
163 |  | -    nnBuffer->getBuffer(offset, buffer);  | 
 | 164 | +    std::vector<T> buffer;  | 
 | 165 | +    nnBuffer->GetBuffer(offset, buffer);  | 
164 | 166 |     return buffer;  | 
165 | 167 | }  | 
166 | 168 | 
 
  | 
 | 
180 | 182 |         .def("print", &NeuralNetworkShapeInformation::print);  | 
181 | 183 | 
 
  | 
182 | 184 |     py::class_<NeuralNetworkBufferInformation> netBuffer(m, "_NeuralNetworkBuffer");  | 
183 |  | -    netBuffer.def(py::init<const std::string&, NNBuffer::bufferMode>())  | 
184 |  | -        .def("add_buffer", &NeuralNetworkBufferInformation::addBuffer)  | 
185 |  | -        .def("get_buffer", &NeuralNetworkBufferInformation::getBuffer);  | 
186 |  | -    py::enum_<NNBuffer::bufferMode>(netBuffer, "mode")  | 
187 |  | -        .value("write", NNBuffer::bufferMode::write)  | 
188 |  | -        .value("append", NNBuffer::bufferMode::append)  | 
189 |  | -        .value("read", NNBuffer::bufferMode::read)  | 
 | 185 | +    netBuffer.def(py::init<const std::string&, NNBuffer::BufferMode>())  | 
 | 186 | +        .def("add_buffer_float", &NeuralNetworkBufferInformation::addBuffer<float>)  | 
 | 187 | +        .def("add_buffer_int", &NeuralNetworkBufferInformation::addBuffer<int32_t>)  | 
 | 188 | +        .def("add_buffer_bool", &NeuralNetworkBufferInformation::addBuffer<uint8_t>)  | 
 | 189 | +        .def("get_buffer_float", &NeuralNetworkBufferInformation::getBuffer<float>)  | 
 | 190 | +        .def("get_buffer_int", &NeuralNetworkBufferInformation::getBuffer<int32_t>)  | 
 | 191 | +        .def("get_buffer_bool", &NeuralNetworkBufferInformation::getBuffer<uint8_t>);  | 
 | 192 | +      | 
 | 193 | +    py::enum_<NNBuffer::BufferMode>(netBuffer, "mode")  | 
 | 194 | +        .value("write", NNBuffer::BufferMode::Write)  | 
 | 195 | +        .value("append", NNBuffer::BufferMode::Append)  | 
 | 196 | +        .value("read", NNBuffer::BufferMode::Read)  | 
190 | 197 |         .export_values();  | 
191 | 198 | 
 
  | 
192 | 199 |     return m.ptr();  | 
 | 
0 commit comments