package org.jerlang.erts.erlang; import java.io.IOException; import org.jerlang.type.BitString; import org.jerlang.type.BitStringOutputStream; import org.jerlang.type.List; import org.jerlang.type.Term; public class ErlangListToBitstring { private ErlangListToBitstring() { } public static Term dispatch(List params) { switch (params.length()) { case 1: return list_to_bitstring_1(params.head().toList()); default: throw Error.badarg; } } /** * Returns a bitstring which is made from the integers and bitstrings * in BitstringList. * (The last tail in BitstringList is allowed to be a bitstring.) * * http://www.erlang.org/doc/man/erlang.html#list_to_bitstring-1 */ public static BitString list_to_bitstring_1(List list) { System.out.println("list_to_bitstring: " + list); try (BitStringOutputStream bsos = new BitStringOutputStream()) { while (list.length() > 0) { bsos.write(list.head()); list = list.tail(); } return bsos.toBitString(); } catch (IOException e) { e.printStackTrace(); return null; } } }