[CCode (cheader_filename = "ei.h", cprefix = "ei_", lower_case_cprefix = "ei_")] namespace Erl { /*public int errno; [CCode (cname = "ei_cnode")] [Compact] public struct Node { [CCode (cname = "ei_connect_init")] public Node(string this_node_name, string cookie, short creation); public Connection connect(string nodename); public Pid* self(); } [CCode (cname="int", cprefix="ERL_")] public enum ReceiveType { ERROR, TICK, MSG } [CCode (cname="int", cprefix="E")] public enum Error { TIMEDOUT } [CCode (cname = "int")] [Compact] public struct Connection : int { public bool is_valid() { return (this >= 0); } private ReceiveType xreceive_msg_tmo(Msg msg, Buffer buffer, uint timeout); [CCode (cname = "erl_receive_vala")] public ReceiveType receive(out Buffer buffer, uint timeout = 0) { buffer = Buffer(); Msg msg; ReceiveType ret = xreceive_msg_tmo(msg, buffer, timeout); return ret; } }*/ [CCode (cname="MAXATOMLEN")] public const int MAXATOMLEN; [CCode (cname="char")] public enum TermType { [CCode (cname="ERL_SMALL_INTEGER_EXT")] SMALL_INTEGER, [CCode (cname="ERL_INTEGER_EXT")] INTEGER, [CCode (cname="ERL_FLOAT_EXT")] FLOAT, [CCode (cname="ERL_ATOM_EXT")] ATOM, [CCode (cname="ERL_REFERENCE_EXT")] REFERENCE, [CCode (cname="ERL_NEW_REFERENCE_EXT")] NEW_REFERENCE, [CCode (cname="ERL_PORT_EXT")] PORT, [CCode (cname="ERL_PID_EXT")] PID, [CCode (cname="ERL_SMALL_TUPLE_EXT")] SMALL_TUPLE, [CCode (cname="ERL_LARGE_TUPLE_EXT")] LARGE_TUPLE, [CCode (cname="ERL_NIL_EXT")] NIL, [CCode (cname="ERL_STRING_EXT")] STRING, [CCode (cname="ERL_LIST_EXT")] LIST, [CCode (cname="ERL_BINARY_EXT")] BINARY, [CCode (cname="ERL_SMALL_BIG_EXT")] SMALL_BIG, [CCode (cname="ERL_LARGE_BIG_EXT")] LARGE_BIG, [CCode (cname="ERL_NEW_FUN_EXT")] NEW_FUN, [CCode (cname="ERL_FUN_EXT")] FUN } public int get_type(char *buf, ref int index, out int type, out int size); public int decode_version(char *buf, ref int index, out int version); public int decode_char(char *buf, ref int index, out char value); public int decode_long(char *buf, ref int index, out long value); public int decode_double(char *buf, ref int index, out double value); public int decode_atom(char *buf, ref int index, char *p); public int decode_tuple_header(char *buf, ref int index, out int arity); public int decode_list_header(char *buf, ref int index, out int arity); public int decode_string(char *buf, ref int index, char *p); public int decode_binary(char *buf, ref int index, char *p, out long len); public int decode_pid(char *buf, ref int index, out Pid pid); public int decode_port(char *buf, ref int index, out Port port); public int decode_ref(char *buf, ref int index, out Ref reference); [CCode (cname = "ei_x_buff", cprefix = "ei_x_", destroy_function = "ei_x_free")] [Compact] public struct Buffer { [CCode (array_length_cname = "index", array_length_type = "int")] public char[] buff; [CCode (cname = "ei_x_new")] public Buffer(); [CCode (cname = "ei_x_new_with_version")] public Buffer.with_version(); public int encode_long(long p); public int encode_ulong(ulong p); public int encode_double(double p); [CCode (cname = "ei_x_encode_atom_len")] public int encode_atom(char[] p); public int encode_tuple_header(int arity); public int encode_list_header(int arity); public int encode_empty_list(); [CCode (cname = "ei_x_encode_string_len")] public int encode_string(char[] p); public int encode_binary(char* p, long len); public int encode_pid(Pid pid); public int encode_port(Port port); public int encode_ref(Ref reference); } [CCode (cname = "erlang_pid", destroy_function = "")] [Compact] public struct Pid { public char[] node; public uint num; public uint serial; public uint creation; } [CCode (cname = "erlang_port", destroy_function = "")] [Compact] public struct Port { public char[] node; public uint id; public uint creation; } [CCode (cname = "erlang_ref", destroy_function = "")] [Compact] public struct Ref { public char[] node; public int len; public uint* n; public uint creation; } /*[CCode (cname = "erlang_msg", destroy_function = "")] [Compact] private struct Msg { public Pid from; }*/ }