namespace Eva { public interface Term : Object { public abstract string to_string(); public abstract void encode(Erl.Buffer buffer); } public class Long : Object, Term { public long value {get; construct;} public Long(long v) { Object(value: v); } public string to_string() { return value.to_string(); } public void encode(Erl.Buffer buffer) { buffer.encode_long(value); } } public class ULong : Object, Term { public ulong value {get; construct;} public ULong(ulong v) { Object(value: v); } public string to_string() { return value.to_string(); } public void encode(Erl.Buffer buffer) { buffer.encode_ulong(value); } } public class Double : Object, Term { public double value {get; construct;} public Double(double v) { Object(value: v); } public string to_string() { return value.to_string(); } public void encode(Erl.Buffer buffer) { buffer.encode_double(value); } } public class Atom : Object, Term { public string value {get; construct;} public Atom(string v) { Object(value: v); } public string to_string() { return value.to_string(); } public void encode(Erl.Buffer buffer) { buffer.encode_atom(value.to_utf8()); } } }