Re: Passing Map to Remote App

new topic     » goto parent     » topic index » view thread      » older message » newer message

It looks like save_map() just uses the serialize() function.

https://github.com/OpenEuphoria/euphoria/blob/master/include/std/map.e#L1433

if type_ = SM_RAW then 
    puts(file_handle_, serialize:serialize({ 
        2, -- saved map version 
        datetime:format(now_gmt(), "%Y%m%d%H%M%S" ), -- date of this saved map 
        info:version_string()} -- Euphoria version 
        )) 
    puts(file_handle_, serialize:serialize(keys_)) 
    puts(file_handle_, serialize:serialize(values_)) 
else 

So here are the (untested and very basic) in-memory equivalents:

include std/map.e 
include std/datetime.e 
include std/serialize.e 
include euphoria/info.e 
 
function serialize_map( map m ) 
 
    sequence keys = map:keys( m ) 
    sequence values = map:values( m ) 
 
    sequence data = {} 
 
    data &= serialize:serialize({ 2, 
        datetime:format(now_gmt(), "%Y%m%d%H%M%S" ), 
        info:version_string() 
    }) 
 
    data &= serialize:serialize( keys ) 
    data &= serialize:serialize( values ) 
 
    return data 
end function 
 
function deserialize_map( sequence data ) 
 
    integer pos = 1 
    object info, keys, value 
 
    {info,pos} = deserialize( data, pos ) 
    {keys,pos} = deserialize( data, pos ) 
    {values,pos} = deserialize( data, pos ) 
 
    if atom( info ) or atom( keys ) or atom( values ) then 
        return 0 
    end if 
 
    map m = map:new() 
 
    for i = 1 to length( keys ) do 
        map:put( m, keys[i], value[i] ) 
    end for 
 
    return m 
end function 

-Greg

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu