#!/usr/bin/env python3

# example of packing and using memory files

import pywgrib2_s
import numpy

in_file='a.grb'
inv='@mem:0'

print("demonstrate read and write from memory files")

# use memory file 0 to store inventory

err=pywgrib2_s.mk_inv(in_file,inv)
print("mk_inv: err=",err)

# get a grib message, store in memory file 1
nmatch=pywgrib2_s.inq(in_file,var='WEASD', time0=2020013118, grib='@mem:1')
if nmatch != 1:
    print('inq: nmatch=', nmatch)
    quit()

# save grib message in grib_buffer
grib_buffer=pywgrib2_s.get_bytes_mem(1)

# write grib_buffer to file
file=open('a_packing_ori.grb','wb')
file.write(grib_buffer)
file.close()

# copy grib_buffer to memory file 2
err = pywgrib2_s.set_mem(2, grib_buffer)
size0 = pywgrib2_s.mem_size(2)
print("membuffer 2: err, size=", err, size0)

# use memory file 2 as template, change to jpeg2000 compression
a=pywgrib2_s.write('a_packing_jpeg.grb','@mem:2',1,packing='j')
print('write jpeg :',a)

print("done")