interface99: add package (#4546)

* interface99: add package

* interface99: test against older version

* interface99: improve test

* interface99: use c11 flag

* interface99: test latest version
autoupdate-tesseract-5.4.1
IMXEren 5 months ago committed by GitHub
parent 1e956bf4f5
commit feadc4000f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 46
      packages/i/interface99/xmake.lua

@ -0,0 +1,46 @@
package("interface99")
set_kind("library", { headeronly = true })
set_homepage("https://github.com/Hirrolot/interface99")
set_description("Full-featured interfaces for C99")
set_license("MIT")
add_urls("https://github.com/Hirrolot/interface99/archive/refs/tags/v$(version).tar.gz",
"https://github.com/Hirrolot/interface99.git")
add_versions("1.0.0", "578c7e60fde4ea1c7fd3515e444c6a2e62a9095dac979516c0046a8ed008e3b2")
add_versions("1.0.1", "ddc7cd979cf9c964a4313a5e6bdc87bd8df669142f29c8edb71d2f2f7822d9aa")
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>
#define Shape_IFACE \
vfunc( int, perim, const VSelf) \
vfunc(void, scale, VSelf, int factor)
interface(Shape);
typedef struct {
int a, b;
} Rectangle;
int Rectangle_perim(const VSelf) {
VSELF(const Rectangle);
return (self->a + self->b) * 2;
}
void Rectangle_scale(VSelf, int factor) {
VSELF(Rectangle);
self->a *= factor;
self->b *= factor;
}
impl(Shape, Rectangle);
void test() {
Shape shape = DYN_LIT(Rectangle, Shape, {5, 7});
assert(VCALL(shape, perim) == 24);
VCALL(shape, scale, 5);
assert(VCALL(shape, perim) == 120);
}
]]}, { configs = { languages = "c11" }, includes = "interface99.h" }))
end)
Loading…
Cancel
Save