libwren-sys 0.1.0

FFI bindings for the wren embedded programming language
Documentation
class Slots {
  foreign static noSet
  foreign static getSlots(bool, num, string, bytes, value)
  foreign static setSlots(a, b, c, d, e)
  foreign static slotTypes(bool, foreignObj, list, map, nullObj, num, string, unknown)
  foreign static ensure()
  foreign static ensureOutsideForeign()
  foreign static getListCount(list)
  foreign static getListElement(list, index)
  foreign static getMapValue(map, key)
}

foreign class ForeignType {
  construct new() {}
}

// If nothing is set in the return slot, it retains its previous value, the
// receiver.
System.print(Slots.noSet == Slots) // expect: true

var value = ["value"]
System.print(Slots.getSlots(true, "by\0te", 1.5, "str", value) == value)
// expect: true

System.print(Slots.setSlots(value, 0, 0, 0, 0) == value)
// expect: true

System.print(Slots.slotTypes(false, ForeignType.new(), [], {}, null, 1.2, "str", 1..2))
// expect: true

System.print(Slots.ensure())
// expect: 1 -> 20 (190)

System.print(Slots.ensureOutsideForeign())
// expect: 0 -> 20 (190)

var ducks = ["Huey", "Dewey", "Louie"]
System.print(Slots.getListCount(ducks))      // expect: 3
System.print(Slots.getListElement(ducks, 0)) // expect: Huey
System.print(Slots.getListElement(ducks, 1)) // expect: Dewey

var capitals = {
  "England": "London",
  "Scotland": "Edinburgh",
  "Wales": "Cardiff",
  "N. Ireland": "Belfast"
}

System.print(Slots.getMapValue(capitals, "England")) // expect: London
System.print(Slots.getMapValue(capitals, "Wales")) // expect: Cardiff
System.print(Slots.getMapValue(capitals, "S. Ireland")) // expect: null