koffi 2.0.0 → 2.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CMakeLists.txt +2 -9
  2. package/ChangeLog.md +25 -2
  3. package/benchmark/atoi_koffi.js +12 -8
  4. package/benchmark/atoi_napi.js +12 -8
  5. package/benchmark/atoi_node_ffi.js +11 -10
  6. package/benchmark/raylib_cc.cc +12 -9
  7. package/benchmark/raylib_koffi.js +15 -13
  8. package/benchmark/raylib_node_ffi.js +15 -13
  9. package/benchmark/raylib_node_raylib.js +14 -11
  10. package/build/qemu/2.1.0-beta.2/koffi_darwin_arm64.tar.gz +0 -0
  11. package/build/qemu/2.1.0-beta.2/koffi_darwin_x64.tar.gz +0 -0
  12. package/build/qemu/2.1.0-beta.2/koffi_freebsd_arm64.tar.gz +0 -0
  13. package/build/qemu/2.1.0-beta.2/koffi_freebsd_ia32.tar.gz +0 -0
  14. package/build/qemu/2.1.0-beta.2/koffi_freebsd_x64.tar.gz +0 -0
  15. package/build/qemu/2.1.0-beta.2/koffi_linux_arm32hf.tar.gz +0 -0
  16. package/build/qemu/2.1.0-beta.2/koffi_linux_arm64.tar.gz +0 -0
  17. package/build/qemu/2.1.0-beta.2/koffi_linux_ia32.tar.gz +0 -0
  18. package/build/qemu/2.1.0-beta.2/koffi_linux_riscv64hf64.tar.gz +0 -0
  19. package/build/qemu/2.1.0-beta.2/koffi_linux_x64.tar.gz +0 -0
  20. package/build/qemu/2.1.0-beta.2/koffi_openbsd_ia32.tar.gz +0 -0
  21. package/build/qemu/2.1.0-beta.2/koffi_openbsd_x64.tar.gz +0 -0
  22. package/build/qemu/2.1.0-beta.2/koffi_win32_arm64.tar.gz +0 -0
  23. package/build/qemu/2.1.0-beta.2/koffi_win32_ia32.tar.gz +0 -0
  24. package/build/qemu/2.1.0-beta.2/koffi_win32_x64.tar.gz +0 -0
  25. package/doc/benchmarks.md +2 -2
  26. package/doc/changes.md +23 -19
  27. package/doc/conf.py +14 -1
  28. package/doc/dist/doctrees/benchmarks.doctree +0 -0
  29. package/doc/dist/doctrees/changes.doctree +0 -0
  30. package/doc/dist/doctrees/environment.pickle +0 -0
  31. package/doc/dist/doctrees/functions.doctree +0 -0
  32. package/doc/dist/doctrees/index.doctree +0 -0
  33. package/doc/dist/doctrees/types.doctree +0 -0
  34. package/doc/functions.md +76 -10
  35. package/doc/templates/badges.html +4 -0
  36. package/doc/types.md +157 -161
  37. package/package.json +2 -2
  38. package/qemu/qemu.js +1 -1
  39. package/src/abi_arm32.cc +167 -3
  40. package/src/abi_arm64.cc +196 -3
  41. package/src/abi_riscv64.cc +107 -3
  42. package/src/abi_x64_sysv.cc +114 -4
  43. package/src/abi_x64_win.cc +113 -3
  44. package/src/abi_x86.cc +156 -5
  45. package/src/call.cc +241 -26
  46. package/src/call.hh +15 -3
  47. package/src/ffi.cc +123 -34
  48. package/src/ffi.hh +19 -0
  49. package/src/index.js +4 -2
  50. package/src/parser.cc +3 -5
  51. package/src/util.cc +44 -1
  52. package/src/util.hh +4 -0
  53. package/test/async.js +1 -2
  54. package/test/callbacks.js +2 -3
  55. package/test/misc.c +21 -1
  56. package/test/raylib.js +1 -1
  57. package/test/sqlite.js +7 -7
  58. package/test/sync.js +30 -4
  59. package/build/qemu/2.0.0/koffi_darwin_arm64.tar.gz +0 -0
  60. package/build/qemu/2.0.0/koffi_darwin_x64.tar.gz +0 -0
  61. package/build/qemu/2.0.0/koffi_freebsd_arm64.tar.gz +0 -0
  62. package/build/qemu/2.0.0/koffi_freebsd_ia32.tar.gz +0 -0
  63. package/build/qemu/2.0.0/koffi_freebsd_x64.tar.gz +0 -0
  64. package/build/qemu/2.0.0/koffi_linux_arm32hf.tar.gz +0 -0
  65. package/build/qemu/2.0.0/koffi_linux_arm64.tar.gz +0 -0
  66. package/build/qemu/2.0.0/koffi_linux_ia32.tar.gz +0 -0
  67. package/build/qemu/2.0.0/koffi_linux_riscv64hf64.tar.gz +0 -0
  68. package/build/qemu/2.0.0/koffi_linux_x64.tar.gz +0 -0
  69. package/build/qemu/2.0.0/koffi_openbsd_ia32.tar.gz +0 -0
  70. package/build/qemu/2.0.0/koffi_openbsd_x64.tar.gz +0 -0
  71. package/build/qemu/2.0.0/koffi_win32_arm64.tar.gz +0 -0
  72. package/build/qemu/2.0.0/koffi_win32_ia32.tar.gz +0 -0
  73. package/build/qemu/2.0.0/koffi_win32_x64.tar.gz +0 -0
  74. package/doc/dist/html/.buildinfo +0 -4
  75. package/doc/dist/html/_sources/benchmarks.md.txt +0 -137
  76. package/doc/dist/html/_sources/changes.md.txt +0 -157
  77. package/doc/dist/html/_sources/contribute.md.txt +0 -127
  78. package/doc/dist/html/_sources/functions.md.txt +0 -355
  79. package/doc/dist/html/_sources/index.rst.txt +0 -39
  80. package/doc/dist/html/_sources/memory.md.txt +0 -32
  81. package/doc/dist/html/_sources/platforms.md.txt +0 -31
  82. package/doc/dist/html/_sources/start.md.txt +0 -100
  83. package/doc/dist/html/_sources/types.md.txt +0 -545
  84. package/doc/dist/html/_static/_sphinx_javascript_frameworks_compat.js +0 -134
  85. package/doc/dist/html/_static/basic.css +0 -932
  86. package/doc/dist/html/_static/bench_linux.png +0 -0
  87. package/doc/dist/html/_static/bench_windows.png +0 -0
  88. package/doc/dist/html/_static/custom.css +0 -22
  89. package/doc/dist/html/_static/debug.css +0 -69
  90. package/doc/dist/html/_static/doctools.js +0 -264
  91. package/doc/dist/html/_static/documentation_options.js +0 -14
  92. package/doc/dist/html/_static/file.png +0 -0
  93. package/doc/dist/html/_static/jquery-3.6.0.js +0 -10881
  94. package/doc/dist/html/_static/jquery.js +0 -2
  95. package/doc/dist/html/_static/language_data.js +0 -199
  96. package/doc/dist/html/_static/minus.png +0 -0
  97. package/doc/dist/html/_static/perf_linux_20220623.png +0 -0
  98. package/doc/dist/html/_static/perf_linux_20220623_2.png +0 -0
  99. package/doc/dist/html/_static/perf_windows_20220623.png +0 -0
  100. package/doc/dist/html/_static/perf_windows_20220623_2.png +0 -0
  101. package/doc/dist/html/_static/plus.png +0 -0
  102. package/doc/dist/html/_static/pygments.css +0 -252
  103. package/doc/dist/html/_static/scripts/furo-extensions.js +0 -0
  104. package/doc/dist/html/_static/scripts/furo.js +0 -3
  105. package/doc/dist/html/_static/scripts/furo.js.LICENSE.txt +0 -7
  106. package/doc/dist/html/_static/scripts/furo.js.map +0 -1
  107. package/doc/dist/html/_static/searchtools.js +0 -531
  108. package/doc/dist/html/_static/skeleton.css +0 -296
  109. package/doc/dist/html/_static/styles/furo-extensions.css +0 -2
  110. package/doc/dist/html/_static/styles/furo-extensions.css.map +0 -1
  111. package/doc/dist/html/_static/styles/furo.css +0 -2
  112. package/doc/dist/html/_static/styles/furo.css.map +0 -1
  113. package/doc/dist/html/_static/underscore-1.13.1.js +0 -2042
  114. package/doc/dist/html/_static/underscore.js +0 -6
  115. package/doc/dist/html/benchmarks.html +0 -568
  116. package/doc/dist/html/changes.html +0 -653
  117. package/doc/dist/html/contribute.html +0 -400
  118. package/doc/dist/html/functions.html +0 -653
  119. package/doc/dist/html/genindex.html +0 -250
  120. package/doc/dist/html/index.html +0 -356
  121. package/doc/dist/html/memory.html +0 -343
  122. package/doc/dist/html/objects.inv +0 -0
  123. package/doc/dist/html/platforms.html +0 -368
  124. package/doc/dist/html/search.html +0 -258
  125. package/doc/dist/html/searchindex.js +0 -1
  126. package/doc/dist/html/start.html +0 -381
  127. package/doc/dist/html/types.html +0 -1044
@@ -1,22 +0,0 @@
1
- /* This program is free software: you can redistribute it and/or modify
2
- it under the terms of the GNU Affero General Public License as published by
3
- the Free Software Foundation, either version 3 of the License, or
4
- (at your option) any later version.
5
-
6
- This program is distributed in the hope that it will be useful,
7
- but WITHOUT ANY WARRANTY; without even the implied warranty of
8
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
- GNU Affero General Public License for more details.
10
-
11
- You should have received a copy of the GNU Affero General Public License
12
- along with this program. If not, see https://www.gnu.org/licenses/. */
13
-
14
- aside.footnote {
15
- display: flex;
16
- margin-top: 6px;
17
- }
18
-
19
- aside.footnote > p {
20
- margin: 0;
21
- margin-left: 1rem;
22
- }
@@ -1,69 +0,0 @@
1
- /*
2
- This CSS file should be overridden by the theme authors. It's
3
- meant for debugging and developing the skeleton that this theme provides.
4
- */
5
- body {
6
- font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif,
7
- "Apple Color Emoji", "Segoe UI Emoji";
8
- background: lavender;
9
- }
10
- .sb-announcement {
11
- background: rgb(131, 131, 131);
12
- }
13
- .sb-announcement__inner {
14
- background: black;
15
- color: white;
16
- }
17
- .sb-header {
18
- background: lightskyblue;
19
- }
20
- .sb-header__inner {
21
- background: royalblue;
22
- color: white;
23
- }
24
- .sb-header-secondary {
25
- background: lightcyan;
26
- }
27
- .sb-header-secondary__inner {
28
- background: cornflowerblue;
29
- color: white;
30
- }
31
- .sb-sidebar-primary {
32
- background: lightgreen;
33
- }
34
- .sb-main {
35
- background: blanchedalmond;
36
- }
37
- .sb-main__inner {
38
- background: antiquewhite;
39
- }
40
- .sb-header-article {
41
- background: lightsteelblue;
42
- }
43
- .sb-article-container {
44
- background: snow;
45
- }
46
- .sb-article-main {
47
- background: white;
48
- }
49
- .sb-footer-article {
50
- background: lightpink;
51
- }
52
- .sb-sidebar-secondary {
53
- background: lightgoldenrodyellow;
54
- }
55
- .sb-footer-content {
56
- background: plum;
57
- }
58
- .sb-footer-content__inner {
59
- background: palevioletred;
60
- }
61
- .sb-footer {
62
- background: pink;
63
- }
64
- .sb-footer__inner {
65
- background: salmon;
66
- }
67
- [role="main"] {
68
- background: white;
69
- }
@@ -1,264 +0,0 @@
1
- /*
2
- * doctools.js
3
- * ~~~~~~~~~~~
4
- *
5
- * Base JavaScript utilities for all Sphinx HTML documentation.
6
- *
7
- * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
- */
11
- "use strict";
12
-
13
- const _ready = (callback) => {
14
- if (document.readyState !== "loading") {
15
- callback();
16
- } else {
17
- document.addEventListener("DOMContentLoaded", callback);
18
- }
19
- };
20
-
21
- /**
22
- * highlight a given string on a node by wrapping it in
23
- * span elements with the given class name.
24
- */
25
- const _highlight = (node, addItems, text, className) => {
26
- if (node.nodeType === Node.TEXT_NODE) {
27
- const val = node.nodeValue;
28
- const parent = node.parentNode;
29
- const pos = val.toLowerCase().indexOf(text);
30
- if (
31
- pos >= 0 &&
32
- !parent.classList.contains(className) &&
33
- !parent.classList.contains("nohighlight")
34
- ) {
35
- let span;
36
-
37
- const closestNode = parent.closest("body, svg, foreignObject");
38
- const isInSVG = closestNode && closestNode.matches("svg");
39
- if (isInSVG) {
40
- span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
41
- } else {
42
- span = document.createElement("span");
43
- span.classList.add(className);
44
- }
45
-
46
- span.appendChild(document.createTextNode(val.substr(pos, text.length)));
47
- parent.insertBefore(
48
- span,
49
- parent.insertBefore(
50
- document.createTextNode(val.substr(pos + text.length)),
51
- node.nextSibling
52
- )
53
- );
54
- node.nodeValue = val.substr(0, pos);
55
-
56
- if (isInSVG) {
57
- const rect = document.createElementNS(
58
- "http://www.w3.org/2000/svg",
59
- "rect"
60
- );
61
- const bbox = parent.getBBox();
62
- rect.x.baseVal.value = bbox.x;
63
- rect.y.baseVal.value = bbox.y;
64
- rect.width.baseVal.value = bbox.width;
65
- rect.height.baseVal.value = bbox.height;
66
- rect.setAttribute("class", className);
67
- addItems.push({ parent: parent, target: rect });
68
- }
69
- }
70
- } else if (node.matches && !node.matches("button, select, textarea")) {
71
- node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
72
- }
73
- };
74
- const _highlightText = (thisNode, text, className) => {
75
- let addItems = [];
76
- _highlight(thisNode, addItems, text, className);
77
- addItems.forEach((obj) =>
78
- obj.parent.insertAdjacentElement("beforebegin", obj.target)
79
- );
80
- };
81
-
82
- /**
83
- * Small JavaScript module for the documentation.
84
- */
85
- const Documentation = {
86
- init: () => {
87
- Documentation.highlightSearchWords();
88
- Documentation.initDomainIndexTable();
89
- Documentation.initOnKeyListeners();
90
- },
91
-
92
- /**
93
- * i18n support
94
- */
95
- TRANSLATIONS: {},
96
- PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
97
- LOCALE: "unknown",
98
-
99
- // gettext and ngettext don't access this so that the functions
100
- // can safely bound to a different name (_ = Documentation.gettext)
101
- gettext: (string) => {
102
- const translated = Documentation.TRANSLATIONS[string];
103
- switch (typeof translated) {
104
- case "undefined":
105
- return string; // no translation
106
- case "string":
107
- return translated; // translation exists
108
- default:
109
- return translated[0]; // (singular, plural) translation tuple exists
110
- }
111
- },
112
-
113
- ngettext: (singular, plural, n) => {
114
- const translated = Documentation.TRANSLATIONS[singular];
115
- if (typeof translated !== "undefined")
116
- return translated[Documentation.PLURAL_EXPR(n)];
117
- return n === 1 ? singular : plural;
118
- },
119
-
120
- addTranslations: (catalog) => {
121
- Object.assign(Documentation.TRANSLATIONS, catalog.messages);
122
- Documentation.PLURAL_EXPR = new Function(
123
- "n",
124
- `return (${catalog.plural_expr})`
125
- );
126
- Documentation.LOCALE = catalog.locale;
127
- },
128
-
129
- /**
130
- * highlight the search words provided in the url in the text
131
- */
132
- highlightSearchWords: () => {
133
- const highlight =
134
- new URLSearchParams(window.location.search).get("highlight") || "";
135
- const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
136
- if (terms.length === 0) return; // nothing to do
137
-
138
- // There should never be more than one element matching "div.body"
139
- const divBody = document.querySelectorAll("div.body");
140
- const body = divBody.length ? divBody[0] : document.querySelector("body");
141
- window.setTimeout(() => {
142
- terms.forEach((term) => _highlightText(body, term, "highlighted"));
143
- }, 10);
144
-
145
- const searchBox = document.getElementById("searchbox");
146
- if (searchBox === null) return;
147
- searchBox.appendChild(
148
- document
149
- .createRange()
150
- .createContextualFragment(
151
- '<p class="highlight-link">' +
152
- '<a href="javascript:Documentation.hideSearchWords()">' +
153
- Documentation.gettext("Hide Search Matches") +
154
- "</a></p>"
155
- )
156
- );
157
- },
158
-
159
- /**
160
- * helper function to hide the search marks again
161
- */
162
- hideSearchWords: () => {
163
- document
164
- .querySelectorAll("#searchbox .highlight-link")
165
- .forEach((el) => el.remove());
166
- document
167
- .querySelectorAll("span.highlighted")
168
- .forEach((el) => el.classList.remove("highlighted"));
169
- const url = new URL(window.location);
170
- url.searchParams.delete("highlight");
171
- window.history.replaceState({}, "", url);
172
- },
173
-
174
- /**
175
- * helper function to focus on search bar
176
- */
177
- focusSearchBar: () => {
178
- document.querySelectorAll("input[name=q]")[0]?.focus();
179
- },
180
-
181
- /**
182
- * Initialise the domain index toggle buttons
183
- */
184
- initDomainIndexTable: () => {
185
- const toggler = (el) => {
186
- const idNumber = el.id.substr(7);
187
- const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
188
- if (el.src.substr(-9) === "minus.png") {
189
- el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
190
- toggledRows.forEach((el) => (el.style.display = "none"));
191
- } else {
192
- el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
193
- toggledRows.forEach((el) => (el.style.display = ""));
194
- }
195
- };
196
-
197
- const togglerElements = document.querySelectorAll("img.toggler");
198
- togglerElements.forEach((el) =>
199
- el.addEventListener("click", (event) => toggler(event.currentTarget))
200
- );
201
- togglerElements.forEach((el) => (el.style.display = ""));
202
- if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
203
- },
204
-
205
- initOnKeyListeners: () => {
206
- // only install a listener if it is really needed
207
- if (
208
- !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
209
- !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
210
- )
211
- return;
212
-
213
- const blacklistedElements = new Set([
214
- "TEXTAREA",
215
- "INPUT",
216
- "SELECT",
217
- "BUTTON",
218
- ]);
219
- document.addEventListener("keydown", (event) => {
220
- if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements
221
- if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys
222
-
223
- if (!event.shiftKey) {
224
- switch (event.key) {
225
- case "ArrowLeft":
226
- if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
227
-
228
- const prevLink = document.querySelector('link[rel="prev"]');
229
- if (prevLink && prevLink.href) {
230
- window.location.href = prevLink.href;
231
- event.preventDefault();
232
- }
233
- break;
234
- case "ArrowRight":
235
- if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
236
-
237
- const nextLink = document.querySelector('link[rel="next"]');
238
- if (nextLink && nextLink.href) {
239
- window.location.href = nextLink.href;
240
- event.preventDefault();
241
- }
242
- break;
243
- case "Escape":
244
- if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
245
- Documentation.hideSearchWords();
246
- event.preventDefault();
247
- }
248
- }
249
-
250
- // some keyboard layouts may need Shift to get /
251
- switch (event.key) {
252
- case "/":
253
- if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
254
- Documentation.focusSearchBar();
255
- event.preventDefault();
256
- }
257
- });
258
- },
259
- };
260
-
261
- // quick alias for translations
262
- const _ = Documentation.gettext;
263
-
264
- _ready(Documentation.init);
@@ -1,14 +0,0 @@
1
- var DOCUMENTATION_OPTIONS = {
2
- URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
3
- VERSION: '',
4
- LANGUAGE: 'en',
5
- COLLAPSE_INDEX: false,
6
- BUILDER: 'html',
7
- FILE_SUFFIX: '.html',
8
- LINK_SUFFIX: '',
9
- HAS_SOURCE: true,
10
- SOURCELINK_SUFFIX: '.txt',
11
- NAVIGATION_WITH_KEYS: false,
12
- SHOW_SEARCH_SUMMARY: true,
13
- ENABLE_SEARCH_SHORTCUTS: false,
14
- };
Binary file