瀏覽代碼

yas: add package (#4140)

* yas: add package

* patch arm
star9029 1 年之前
父節點
當前提交
95b07b207e
共有 1 個文件被更改,包括 39 次插入0 次删除
  1. 39 0
      packages/y/yas/xmake.lua

+ 39 - 0
packages/y/yas/xmake.lua

@@ -0,0 +1,39 @@
+package("yas")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/niXman/yas")
+    set_description("Yet Another Serialization")
+
+    add_urls("https://github.com/niXman/yas.git")
+    add_versions("2023.09.13", "7c5ced1d940ddc6826cf537468e65ea1f592bfe4")
+
+    on_install(function (package)
+        io.replace("include/yas/detail/config/endian.hpp",
+        "|| defined(__ARM_ARCH_7S__)",
+        "|| defined(__ARM_ARCH_7S__) || defined(_M_ARM64)", {plain = true})
+        os.cp("include", package:installdir())
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            #include <yas/serialize.hpp>
+            #include <yas/std_types.hpp>
+            void test() {
+                int a = 3, aa{};
+                short b = 4, bb{};
+                float c = 3.14, cc{};
+                constexpr std::size_t flags = 
+                    yas::mem // IO type
+                    |yas::json; // IO format
+                auto buf = yas::save<flags>(
+                    YAS_OBJECT("myobject", a, b, c)
+                );
+                yas::load<flags>(buf,
+                    YAS_OBJECT_NVP("myobject"
+                        ,("a", aa)
+                        ,("b", bb)
+                        ,("c", cc)
+                    )
+                );
+            }
+        ]]}, {configs = {languages = "c++14"}}))
+    end)