[erlang-questions] Encoding empty strings using ei
Peter Membrey
peter@REDACTED
Thu Aug 1 08:52:14 CEST 2013
Hi Serge,
Thanks for taking the time to go through that, much appreciated!
Cheers,
Pete
----- Original Message -----
From: "Serge Aleynikov" <serge@REDACTED>
To: "Peter Membrey" <peter@REDACTED>
Cc: "Erlang Questions" <erlang-questions@REDACTED>
Sent: Thursday, 1 August, 2013 1:00:19 PM
Subject: Re: [erlang-questions] Encoding empty strings using ei
term_to_binary/1 is your friend:
1> term_to_binary({mylist, []}).
<<131,104,2,100,0,6,109,121,108,105,115,116,106>>
As you see at the end of that binary, the empty list gets encoded with a
special 106 ('j') tag, which is what ei_x_encode_empty_list() call does
under the hood.
$ grep ERL_NIL_EXT lib/erl_interface/include/ei.h
#define ERL_NIL_EXT 'j'
So the correct way to encode the {mylist, []} tuple in ei is to call:
ei_x_new_with_version(pbuf);
ei_x_encode_tuple_header(pbuf, 2);
ei_x_encode_atom(pbuf, "mylist");
ei_x_encode_empty_list(pbuf);
BR,
Serge
On 7/31/2013 11:57 AM, Peter Membrey wrote:
> Hi guys,
>
> I've got a C program that encodes a list of tuples to send to an Erlang
> server, something like this:
>
> {mylist, [{1,2,3} , {2,3,4} , {3,4,5}]}
>
> To do this I encode a list header with:
>
> ei_x_encode_list_header(ei_x_buff* x, int arity);
>
> and all is well.
>
> The question I have though, is what should I do if I encode this tuple?
>
> {mylist, [] }
>
> Should I encode the tuple, followed by an empty list
> (ei_x_encode_empty_list) or do I need to put in a list header with an
> arity of 0 and then add the empty list?
>
> In short, what is the correct way to encode an empty list using the ei
> interface.
>
> Thanks in advance!
>
> Cheers,
>
> Pete
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
More information about the erlang-questions
mailing list