add contextManager to hanldle files

This commit is contained in:
Bechir Braham
2024-03-22 15:02:15 +01:00
parent e7bf408a21
commit d0151153fb
17 changed files with 105 additions and 81 deletions

View File

@ -6,16 +6,16 @@ NumpyFile::NumpyFile(std::filesystem::path fname_){
fp = fopen(this->fname.c_str(), "rb");
}
Frame* NumpyFile::get_frame(size_t frame_number) {
Frame NumpyFile::get_frame(size_t frame_number) {
if (fp == nullptr) {
throw std::runtime_error("File not open");
}
if (frame_number > header.shape[0]) {
throw std::runtime_error("Frame number out of range");
}
Frame *frame = new Frame(header.shape[1], header.shape[2], header.dtype.itemsize*8);
Frame frame = Frame(header.shape[1], header.shape[2], header.dtype.itemsize*8);
fseek(fp, header_size + frame_number * bytes_per_frame(), SEEK_SET);
fread(frame->_get_data(), bytes_per_frame(), 1, fp);
fread(frame._get_data(), bytes_per_frame(), 1, fp);
return frame;
}