MCPcopy Create free account
hub / github.com/ARM-software/ComputeLibrary / write_header

Function write_header

include/libnpy/npy.hpp:410–446  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

408}
409
410inline void write_header(std::ostream &out, const header_t &header) {
411 std::string header_dict = write_header_dict(header.dtype.str(), header.fortran_order, header.shape);
412
413 size_t length = magic_string_length + 2 + 2 + header_dict.length() + 1;
414
415 version_t version{1, 0};
416 if (length >= 255 * 255) {
417 length = magic_string_length + 2 + 4 + header_dict.length() + 1;
418 version = {2, 0};
419 }
420 size_t padding_len = 16 - length % 16;
421 std::string padding(padding_len, ' ');
422
423 // write magic
424 write_magic(out, version);
425
426 // write header length
427 if (version == version_t{1, 0}) {
428 uint8_t header_len_le16[2];
429 uint16_t header_len = static_cast<uint16_t>(header_dict.length() + padding.length() + 1);
430
431 header_len_le16[0] = (header_len >> 0) & 0xff;
432 header_len_le16[1] = (header_len >> 8) & 0xff;
433 out.write(reinterpret_cast<char *>(header_len_le16), 2);
434 } else {
435 uint8_t header_len_le32[4];
436 uint32_t header_len = static_cast<uint32_t>(header_dict.length() + padding.length() + 1);
437
438 header_len_le32[0] = (header_len >> 0) & 0xff;
439 header_len_le32[1] = (header_len >> 8) & 0xff;
440 header_len_le32[2] = (header_len >> 16) & 0xff;
441 header_len_le32[3] = (header_len >> 24) & 0xff;
442 out.write(reinterpret_cast<char *>(header_len_le32), 4);
443 }
444
445 out << header_dict << padding << '\n';
446}
447
448inline std::string read_header(std::istream &istream) {
449 // check magic bytes an version number

Callers 2

save_to_npyFunction · 0.85
SaveArrayAsNumpyFunction · 0.85

Calls 3

write_header_dictFunction · 0.85
write_magicFunction · 0.85
strMethod · 0.80

Tested by

no test coverage detected