Erl_eterm doc and erl_interface.h information conflict?

90 Views Asked by At

I do not understand the following between erl_eterm and erl_interface.h

In erl_eterm the following are described as:

ETERM *ERL_PID_NODE(t)
ETERM *ERL_PID_NODE_UTF8(t)
ETERM *ERL_PORT_NODE(t)
ETERM *ERL_PORT_NODE_UTF8(t)

Where as in erl_interface.h they are defined as

#define ERL_PID_NODE(x) erl_atom_ptr_latin1((Erl_Atom_data*) &(x)->uval.pidval.node)
#define ERL_PID_NODE_UTF8(x) erl_atom_ptr_utf8((Erl_Atom_data*) &(x)->uval.pidval.node)
#define ERL_PORT_NODE(x) erl_atom_ptr_latin1((Erl_Atom_data*) &(x)->uval.portval.node)
#define ERL_PORT_NODE_UTF8(x) erl_atom_ptr_utf8((Erl_Atom_data*) &(x)->uval.portval.node)
#define ERL_REF_NODE(x) erl_atom_ptr_latin1((Erl_Atom_data*) &(x)->uval.refval.node)

If ERL_ATOM_PTR/ERL_ATOM_PTR_UTF8 needs to be used together with ERL_ATOM_SIZE/ERL_ATOM_SIZE_UTF8 to construct a NULL terminated c-string (char*), the same should be true for ERL_*_NODE* macros as they are all defined similarly. And none of them return ETERM* as defined in doc.

What am I missing here?

0

There are 0 best solutions below