///|
fn v2_extern(
  name : String,
  parameters : Array[String],
  return_type : String,
) -> String {
  let line = "extern \"C\" fn " +
    name +
    "(" +
    parameters.join(", ") +
    ") -> " +
    return_type +
    " = \"" +
    name +
    "\"\n"
  if line.length() <= 90 && parameters.length() <= 2 {
    line
  } else {
    "extern \"C\" fn " +
    name +
    "(\n" +
    parameters.map(parameter => "  " + parameter + ",").join("\n") +
    "\n) -> " +
    return_type +
    " = \"" +
    name +
    "\"\n"
  }
}

///|
fn v2_public_head(name : String, parameters : Array[String]) -> String {
  let line = "pub fn " + name + "(" + parameters.join(", ") + ")"
  if line.length() <= 90 && parameters.length() <= 2 {
    line
  } else {
    "pub fn " +
    name +
    "(\n" +
    parameters.map(parameter => "  " + parameter + ",").join("\n") +
    "\n)"
  }
}