123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package("datatype99")
- set_kind("library", { headeronly = true })
- set_homepage("https://github.com/Hirrolot/datatype99")
- set_description("Algebraic data types for C99")
- set_license("MIT")
- add_urls("https://github.com/Hirrolot/datatype99/archive/refs/tags/v$(version).tar.gz",
- "https://github.com/Hirrolot/datatype99.git")
- add_versions("1.6.3", "0ddc138eac8db19fa22c482d9a2ec107ff622fd7ce61bb0b1eefb4d8f522e01e")
- add_versions("1.6.4", "f8488decc7ab035e3af77ee62e64fc678d5cb57831457f7270efe003e63d6f09")
- add_versions("1.6.5", "f38c077afdb91b7d754321be5d3c4a43ed5420c1ad51514d1de20023960f9a8e")
- add_deps("metalang99")
- on_install(function(package)
- os.cp("*.h", package:installdir("include"))
- end)
- on_test(function(package)
- assert(package:check_csnippets({test = [[
- #include <assert.h>
- datatype(
- BinaryTree,
- (Leaf, int),
- (Node, BinaryTree *, int, BinaryTree *)
- );
- int sum(const BinaryTree *tree) {
- match(*tree) {
- of(Leaf, x) return *x;
- of(Node, lhs, x, rhs) return sum(*lhs) + *x + sum(*rhs);
- }
- return -1;
- }
- void test() {
- BinaryTree leaf5 = Leaf(5);
- BinaryTree leaf7 = Leaf(7);
- BinaryTree node = Node(&leaf5, 123, &leaf7);
- assert(sum(&node) == 135);
- }
- ]]}, { configs = { languages = "c11" }, includes = "datatype99.h" }))
- end)
|