Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7a68af54e6 | |||
| 330650a7eb | |||
| 579be8e07d | |||
| 0539846124 | |||
| ed44ce0588 | |||
| 30b1109e16 | |||
| 7fd83684fb |
@@ -1,39 +0,0 @@
|
|||||||
|
|
||||||
name: Deploy GitHub Pages
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
pull_request:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: cicd-docs-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
run:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
steps:
|
|
||||||
- name: Checkout Git submodules
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
with:
|
|
||||||
submodules: true
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Build LDoc documentation
|
|
||||||
uses: lunarmodules/ldoc@v1.5.0
|
|
||||||
with:
|
|
||||||
args: .
|
|
||||||
|
|
||||||
- name: Copying files
|
|
||||||
run: |
|
|
||||||
sudo cp LICENSE doc/topics/LICENSE
|
|
||||||
|
|
||||||
- name: Deploy documentation to gh-pages
|
|
||||||
uses: peaceiris/actions-gh-pages@v4
|
|
||||||
if: ${{ github.ref == 'refs/heads/master' }}
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
publish_dir: ./doc
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
name: Packaging Lua
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
pull_request:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: packaging-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
run:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
steps:
|
|
||||||
- name: Checkout Git submodules
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
with:
|
|
||||||
submodules: true
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Preparing build directory
|
|
||||||
run: |
|
|
||||||
mkdir -p build/lua/doc
|
|
||||||
|
|
||||||
- name: Build LDoc documentation
|
|
||||||
uses: lunarmodules/ldoc@v1.5.0
|
|
||||||
with:
|
|
||||||
args: .
|
|
||||||
|
|
||||||
- name: Copying files
|
|
||||||
run: |
|
|
||||||
cp readme.md build/readme.md
|
|
||||||
cp LICENSE build/LICENSE
|
|
||||||
cp demo.lua build/demo.lua
|
|
||||||
cp -R doc/ build/doc/
|
|
||||||
cp LICENSE build/doc/topics/LICENSE
|
|
||||||
|
|
||||||
- name: Upload artifact (socket.7z)
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: ${{ github.ref == 'refs/heads/master' }}
|
|
||||||
with:
|
|
||||||
name: LuaJIT-Sleep
|
|
||||||
path: build/
|
|
||||||
compression-level: 0
|
|
||||||
retention-days: 30
|
|
||||||
-25
@@ -1,25 +0,0 @@
|
|||||||
# IDEs
|
|
||||||
.vs/
|
|
||||||
.idea/
|
|
||||||
vs/
|
|
||||||
|
|
||||||
# Runtimes
|
|
||||||
bin/
|
|
||||||
lua.exe
|
|
||||||
luajit.exe
|
|
||||||
lua51.dll
|
|
||||||
lua/jit/
|
|
||||||
|
|
||||||
# Tools
|
|
||||||
scripts/luapack.lua
|
|
||||||
|
|
||||||
# Trash
|
|
||||||
*.pb.cfg
|
|
||||||
*.pbi.cfg
|
|
||||||
*.pbf.cfg
|
|
||||||
*.exe
|
|
||||||
|
|
||||||
# Build artifacts
|
|
||||||
*.packed.lua
|
|
||||||
*.lua.bin
|
|
||||||
*.lua.raw
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
project = "LuaJIT-Sleep"
|
|
||||||
title = "NibblePoker's LuaJIT Sleep Library"
|
|
||||||
dir = "doc"
|
|
||||||
format = "markdown"
|
|
||||||
|
|
||||||
file = {
|
|
||||||
"lua/sleep.lua",
|
|
||||||
}
|
|
||||||
|
|
||||||
readme = {
|
|
||||||
"readme.md",
|
|
||||||
}
|
|
||||||
|
|
||||||
all = true
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
local sleep_lib = require("sleep")
|
|
||||||
|
|
||||||
print("Now sleeping for 3 seconds...")
|
|
||||||
|
|
||||||
sleep_lib.sleep_s(3)
|
|
||||||
|
|
||||||
print("Now sleeping for 500 milliseconds...")
|
|
||||||
|
|
||||||
sleep_lib.sleep_ms(500)
|
|
||||||
|
|
||||||
print("I'm back and awake")
|
|
||||||
+170
@@ -0,0 +1,170 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||||
|
<head>
|
||||||
|
<title>NibblePoker's LuaJIT Sleep Library</title>
|
||||||
|
<link rel="stylesheet" href="ldoc.css" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="container">
|
||||||
|
|
||||||
|
<div id="product">
|
||||||
|
<div id="product_logo"></div>
|
||||||
|
<div id="product_name"><big><b></b></big></div>
|
||||||
|
<div id="product_description"></div>
|
||||||
|
</div> <!-- id="product" -->
|
||||||
|
|
||||||
|
|
||||||
|
<div id="main">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Menu -->
|
||||||
|
|
||||||
|
<div id="navigation">
|
||||||
|
<br/>
|
||||||
|
<h1>LuaJIT-Sleep</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Contents</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#Functions">Functions</a></li>
|
||||||
|
<li><a href="#Fields">Fields</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Modules</h2>
|
||||||
|
<ul class="nowrap">
|
||||||
|
<li><strong>sleep</strong></li>
|
||||||
|
</ul>
|
||||||
|
<h2>Topics</h2>
|
||||||
|
<ul class="">
|
||||||
|
<li><a href="topics/readme.md.html">readme</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
|
||||||
|
<h1>Module <code>sleep</code></h1>
|
||||||
|
<p>Pure LuaJIT bindings for Windows and Linux native <a href="index.html#">sleep</a> function.</p>
|
||||||
|
<p> </p>
|
||||||
|
<h3>Info:</h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Copyright</strong>: 2026</li>
|
||||||
|
<li><strong>Release</strong>: 2.0.0</li>
|
||||||
|
<li><strong>License</strong>: CC0 1.0 Universal (CC0 1.0) (Public Domain)</li>
|
||||||
|
<li><strong>Author</strong>: Herwin Bozet (NibblePoker)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2><a href="#Functions">Functions</a></h2>
|
||||||
|
<table class="function_list">
|
||||||
|
<tr>
|
||||||
|
<td class="name" nowrap><a href="#sleep_ms">sleep_ms (milliseconds)</a></td>
|
||||||
|
<td class="summary">Sleeps for a given amount of milliseconds and returns.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="name" nowrap><a href="#sleep_s">sleep_s (seconds)</a></td>
|
||||||
|
<td class="summary">Sleeps for a given amount of seconds and returns.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<h2><a href="#Fields">Fields</a></h2>
|
||||||
|
<table class="function_list">
|
||||||
|
<tr>
|
||||||
|
<td class="name" nowrap><a href="#ignore_errors">ignore_errors</a></td>
|
||||||
|
<td class="summary">Allows you to ignore errors about negative numbers and others returned by the OS.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
<h2 class="section-header "><a name="Functions"></a>Functions</h2>
|
||||||
|
|
||||||
|
<dl class="function">
|
||||||
|
<dt>
|
||||||
|
<a name = "sleep_ms"></a>
|
||||||
|
<strong>sleep_ms (milliseconds)</strong>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
Sleeps for a given amount of milliseconds and returns. \
|
||||||
|
May be interrupted by the OS.
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Parameters:</h3>
|
||||||
|
<ul>
|
||||||
|
<li><span class="parameter">milliseconds</span>
|
||||||
|
number Amount of milliseconds to sleep.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>Returns:</h3>
|
||||||
|
<ol>
|
||||||
|
|
||||||
|
nil
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
<a name = "sleep_s"></a>
|
||||||
|
<strong>sleep_s (seconds)</strong>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
Sleeps for a given amount of seconds and returns. \
|
||||||
|
May be interrupted by the OS.
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Parameters:</h3>
|
||||||
|
<ul>
|
||||||
|
<li><span class="parameter">seconds</span>
|
||||||
|
number Amount of seconds to sleep.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>Returns:</h3>
|
||||||
|
<ol>
|
||||||
|
|
||||||
|
nil
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<h2 class="section-header "><a name="Fields"></a>Fields</h2>
|
||||||
|
|
||||||
|
<dl class="function">
|
||||||
|
<dt>
|
||||||
|
<a name = "ignore_errors"></a>
|
||||||
|
<strong>ignore_errors</strong>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
Allows you to ignore errors about negative numbers and others returned by the OS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
|
</div> <!-- id="content" -->
|
||||||
|
</div> <!-- id="main" -->
|
||||||
|
<div id="about">
|
||||||
|
<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
|
||||||
|
<i style="float:right;">Last updated 2026-04-12 07:30:52 </i>
|
||||||
|
</div> <!-- id="about" -->
|
||||||
|
</div> <!-- id="container" -->
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,304 @@
|
|||||||
|
/* BEGIN RESET
|
||||||
|
|
||||||
|
Copyright (c) 2010, Yahoo! Inc. All rights reserved.
|
||||||
|
Code licensed under the BSD License:
|
||||||
|
http://developer.yahoo.com/yui/license.html
|
||||||
|
version: 2.8.2r1
|
||||||
|
*/
|
||||||
|
html {
|
||||||
|
color: #000;
|
||||||
|
background: #FFF;
|
||||||
|
}
|
||||||
|
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
fieldset,img {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
address,caption,cite,code,dfn,em,strong,th,var,optgroup {
|
||||||
|
font-style: inherit;
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
del,ins {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
caption,th {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
h1,h2,h3,h4,h5,h6 {
|
||||||
|
font-size: 100%;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
q:before,q:after {
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
abbr,acronym {
|
||||||
|
border: 0;
|
||||||
|
font-variant: normal;
|
||||||
|
}
|
||||||
|
sup {
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
sub {
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
legend {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
input,button,textarea,select,optgroup,option {
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: inherit;
|
||||||
|
font-style: inherit;
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
input,button,textarea,select {*font-size:100%;
|
||||||
|
}
|
||||||
|
/* END RESET */
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
font-family: arial, helvetica, geneva, sans-serif;
|
||||||
|
background-color: #ffffff; margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
code, tt { font-family: monospace; font-size: 1.1em; }
|
||||||
|
span.parameter { font-family:monospace; }
|
||||||
|
span.parameter:after { content:":"; }
|
||||||
|
span.types:before { content:"("; }
|
||||||
|
span.types:after { content:")"; }
|
||||||
|
.type { font-weight: bold; font-style:italic }
|
||||||
|
|
||||||
|
body, p, td, th { font-size: .95em; line-height: 1.2em;}
|
||||||
|
|
||||||
|
p, ul { margin: 10px 0 0 0px;}
|
||||||
|
|
||||||
|
strong { font-weight: bold;}
|
||||||
|
|
||||||
|
em { font-style: italic;}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
margin: 20px 0 20px 0;
|
||||||
|
}
|
||||||
|
h2, h3, h4 { margin: 15px 0 10px 0; }
|
||||||
|
h2 { font-size: 1.25em; }
|
||||||
|
h3 { font-size: 1.15em; }
|
||||||
|
h4 { font-size: 1.06em; }
|
||||||
|
|
||||||
|
a:link { font-weight: bold; color: #004080; text-decoration: none; }
|
||||||
|
a:visited { font-weight: bold; color: #006699; text-decoration: none; }
|
||||||
|
a:link:hover { text-decoration: underline; }
|
||||||
|
|
||||||
|
hr {
|
||||||
|
color:#cccccc;
|
||||||
|
background: #00007f;
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote { margin-left: 3em; }
|
||||||
|
|
||||||
|
ul { list-style-type: disc; }
|
||||||
|
|
||||||
|
p.name {
|
||||||
|
font-family: "Andale Mono", monospace;
|
||||||
|
padding-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background-color: rgb(245, 245, 245);
|
||||||
|
border: 1px solid #C0C0C0; /* silver */
|
||||||
|
padding: 10px;
|
||||||
|
margin: 10px 0 10px 0;
|
||||||
|
overflow: auto;
|
||||||
|
font-family: "Andale Mono", monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre.example {
|
||||||
|
font-size: .85em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.index { border: 1px #00007f; }
|
||||||
|
table.index td { text-align: left; vertical-align: top; }
|
||||||
|
|
||||||
|
#container {
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#product {
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 1px solid #cccccc;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#product big {
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main {
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
border-left: 2px solid #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation {
|
||||||
|
float: left;
|
||||||
|
width: 14em;
|
||||||
|
vertical-align: top;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation h2 {
|
||||||
|
background-color:#e7e7e7;
|
||||||
|
font-size:1.1em;
|
||||||
|
color:#000000;
|
||||||
|
text-align: left;
|
||||||
|
padding:0.2em;
|
||||||
|
border-top:1px solid #dddddd;
|
||||||
|
border-bottom:1px solid #dddddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation ul
|
||||||
|
{
|
||||||
|
font-size:1em;
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 1px 1px 10px 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation li {
|
||||||
|
text-indent: -1em;
|
||||||
|
display: block;
|
||||||
|
margin: 3px 0px 0px 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation li li a {
|
||||||
|
margin: 0px 3px 0px -1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
margin-left: 14em;
|
||||||
|
padding: 1em;
|
||||||
|
width: 700px;
|
||||||
|
border-left: 2px solid #cccccc;
|
||||||
|
border-right: 2px solid #cccccc;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#about {
|
||||||
|
clear: both;
|
||||||
|
padding: 5px;
|
||||||
|
border-top: 2px solid #cccccc;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
body {
|
||||||
|
font: 12pt "Times New Roman", "TimeNR", Times, serif;
|
||||||
|
}
|
||||||
|
a { font-weight: bold; color: #004080; text-decoration: underline; }
|
||||||
|
|
||||||
|
#main {
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container {
|
||||||
|
margin-left: 2%;
|
||||||
|
margin-right: 2%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
padding: 1em;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
pre.example {
|
||||||
|
font-family: "Andale Mono", monospace;
|
||||||
|
font-size: 10pt;
|
||||||
|
page-break-inside: avoid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
table.module_list {
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #cccccc;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
table.module_list td {
|
||||||
|
border-width: 1px;
|
||||||
|
padding: 3px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #cccccc;
|
||||||
|
}
|
||||||
|
table.module_list td.name { background-color: #f0f0f0; min-width: 200px; }
|
||||||
|
table.module_list td.summary { width: 100%; }
|
||||||
|
|
||||||
|
|
||||||
|
table.function_list {
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #cccccc;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
table.function_list td {
|
||||||
|
border-width: 1px;
|
||||||
|
padding: 3px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #cccccc;
|
||||||
|
}
|
||||||
|
table.function_list td.name { background-color: #f0f0f0; min-width: 200px; }
|
||||||
|
table.function_list td.summary { width: 100%; }
|
||||||
|
|
||||||
|
ul.nowrap {
|
||||||
|
overflow:auto;
|
||||||
|
white-space:nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
|
||||||
|
dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;}
|
||||||
|
dl.table h3, dl.function h3 {font-size: .95em;}
|
||||||
|
|
||||||
|
/* stop sublists from having initial vertical space */
|
||||||
|
ul ul { margin-top: 0px; }
|
||||||
|
ol ul { margin-top: 0px; }
|
||||||
|
ol ol { margin-top: 0px; }
|
||||||
|
ul ol { margin-top: 0px; }
|
||||||
|
|
||||||
|
/* make the target distinct; helps when we're navigating to a function */
|
||||||
|
a:target + * {
|
||||||
|
background-color: #FF9;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* styles for prettification of source */
|
||||||
|
pre .comment { color: #558817; }
|
||||||
|
pre .constant { color: #a8660d; }
|
||||||
|
pre .escape { color: #844631; }
|
||||||
|
pre .keyword { color: #aa5050; font-weight: bold; }
|
||||||
|
pre .library { color: #0e7c6b; }
|
||||||
|
pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; }
|
||||||
|
pre .string { color: #8080ff; }
|
||||||
|
pre .number { color: #f8660d; }
|
||||||
|
pre .function-name { color: #60447f; }
|
||||||
|
pre .operator { color: #2239a8; font-weight: bold; }
|
||||||
|
pre .preprocessor, pre .prepro { color: #a33243; }
|
||||||
|
pre .global { color: #800080; }
|
||||||
|
pre .user-keyword { color: #800080; }
|
||||||
|
pre .prompt { color: #558817; }
|
||||||
|
pre .url { color: #272fc2; text-decoration: underline; }
|
||||||
|
|
||||||
-123
@@ -1,123 +0,0 @@
|
|||||||
--- Pure LuaJIT bindings for Windows and Linux native `sleep` function.
|
|
||||||
--
|
|
||||||
-- @module sleep
|
|
||||||
-- @author Herwin Bozet (NibblePoker)
|
|
||||||
-- @license CC0 1.0 Universal (CC0 1.0) (Public Domain)
|
|
||||||
-- @copyright 2026
|
|
||||||
--
|
|
||||||
-- @release 1.0.0
|
|
||||||
|
|
||||||
|
|
||||||
-- Setup
|
|
||||||
-- -----
|
|
||||||
|
|
||||||
local ffi = require("ffi")
|
|
||||||
|
|
||||||
local _is_win32 = ffi.os == "Windows"
|
|
||||||
local _is_linux = ffi.os == "Linux"
|
|
||||||
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Config
|
|
||||||
-- ------
|
|
||||||
|
|
||||||
--- Allows you to ignore errors about negative numbers and others returned by the OS.
|
|
||||||
M.ignore_errors = false
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Private globals
|
|
||||||
-- ---------------
|
|
||||||
|
|
||||||
-- @function _win32_sleep
|
|
||||||
local _win32_sleep
|
|
||||||
|
|
||||||
-- @function _linux_nanosleep
|
|
||||||
local _linux_nanosleep
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Bindings
|
|
||||||
-- --------
|
|
||||||
|
|
||||||
if _is_win32 then
|
|
||||||
-- Documentation:
|
|
||||||
-- * https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep
|
|
||||||
|
|
||||||
local _kernel32_lib = ffi.load("kernel32")
|
|
||||||
|
|
||||||
ffi.cdef [[
|
|
||||||
typedef unsigned long DWORD;
|
|
||||||
void Sleep(DWORD dwMilliseconds);
|
|
||||||
]]
|
|
||||||
|
|
||||||
_win32_sleep = _kernel32_lib.Sleep
|
|
||||||
|
|
||||||
elseif _is_linux then
|
|
||||||
-- Documentation:
|
|
||||||
-- * https://man7.org/linux/man-pages/man3/sleep.3.html
|
|
||||||
-- * https://man7.org/linux/man-pages/man2/nanosleep.2.html
|
|
||||||
|
|
||||||
ffi.cdef [[
|
|
||||||
typedef long time_t;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
time_t tv_sec;
|
|
||||||
long tv_nsec;
|
|
||||||
} timespec_t;
|
|
||||||
|
|
||||||
int nanosleep(const timespec_t *req, timespec_t *rem);
|
|
||||||
]]
|
|
||||||
|
|
||||||
_linux_nanosleep = ffi.C.nanosleep
|
|
||||||
|
|
||||||
else
|
|
||||||
error("Library must be used on Win32 or Linux platforms ! (os: " .. ffi.os .. ")")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Wrappers
|
|
||||||
-- --------
|
|
||||||
|
|
||||||
--- Sleeps for a given amount of milliseconds and returns. \
|
|
||||||
--- May be interrupted by the OS.
|
|
||||||
--- @param milliseconds number Amount of milliseconds to sleep.
|
|
||||||
function M.sleep_ms(milliseconds)
|
|
||||||
if milliseconds < 0 then
|
|
||||||
if M.ignore_errors then
|
|
||||||
milliseconds = 0
|
|
||||||
else
|
|
||||||
error("milliseconds: argument must be a non-negative integer")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if _is_win32 then
|
|
||||||
_win32_sleep(milliseconds)
|
|
||||||
elseif _is_linux then
|
|
||||||
-- timespec_t { seconds, milliseconds_left_as_ns }
|
|
||||||
local req = ffi.new(
|
|
||||||
"timespec_t", math.floor(milliseconds / 1000), (milliseconds % 1000) * 1e6
|
|
||||||
)
|
|
||||||
|
|
||||||
if _linux_nanosleep(req, nil) ~= 0 then
|
|
||||||
if not M.ignore_errors then
|
|
||||||
error(string.format("sleep_ms: sleep: nanosleep failed (errno %d)", ffi.errno()))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
error("Library must be used on Win32 or Linux platforms ! (os: " .. ffi.os .. ")")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Sleeps for a given amount of seconds and returns. \
|
|
||||||
--- May be interrupted by the OS.
|
|
||||||
--- @param seconds number Amount of seconds to sleep.
|
|
||||||
function M.sleep_s(seconds)
|
|
||||||
return M.sleep_ms(seconds * 1000)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
return M
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
# LuaJIT - Sleep
|
|
||||||
Pure LuaJIT bindings and wrappers for native sleep functions on Win32 and Linux.
|
|
||||||
|
|
||||||
> **📢 This is library is in low maintenance mode** \
|
|
||||||
I consider it feature-complete, and unless a bug is found, I don't plan on updating it.
|
|
||||||
|
|
||||||
|
|
||||||
## Features
|
|
||||||
* Second-level sleeps
|
|
||||||
* Millisecond-level sleeps
|
|
||||||
* Ability to supress all errors
|
|
||||||
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
* A somewhat modern OS
|
|
||||||
* Windows XP or newer *(x86/x64) (Untested on ARM32/ARM64)*
|
|
||||||
* Windows Server 2003 or newer *(x86/x64) (Untested on ARM32/ARM64)*
|
|
||||||
* Linux 4.4+ *(x86/x64) (Untested on ARM32/ARM64/RISCV/...)*
|
|
||||||
* *LuaJIT v2.1.*
|
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
### Manual
|
|
||||||
1. Download the [latest release](https://github.com/aziascreations/LuaJIT-Sleep/releases).
|
|
||||||
2. Extract the content of the archive in your `lua/` folder.
|
|
||||||
|
|
||||||
### LuaRocks
|
|
||||||
* TODO: Will be done soon-ish
|
|
||||||
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
```lua
|
|
||||||
local sleep_lib = require("sleep")
|
|
||||||
|
|
||||||
print("Now sleeping for 3 seconds...")
|
|
||||||
|
|
||||||
sleep_lib.sleep_s(3)
|
|
||||||
|
|
||||||
print("Now sleeping for 500 milliseconds...")
|
|
||||||
|
|
||||||
sleep_lib.sleep_ms(500)
|
|
||||||
|
|
||||||
print("I'm back and awake")
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
The code in this repository is licensed under
|
|
||||||
[CC0 1.0 Universal (CC0 1.0) (Public Domain)](LICENSE).
|
|
||||||
@@ -0,0 +1,130 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||||
|
<head>
|
||||||
|
<title>NibblePoker's LuaJIT Sleep Library</title>
|
||||||
|
<link rel="stylesheet" href="../ldoc.css" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="container">
|
||||||
|
|
||||||
|
<div id="product">
|
||||||
|
<div id="product_logo"></div>
|
||||||
|
<div id="product_name"><big><b></b></big></div>
|
||||||
|
<div id="product_description"></div>
|
||||||
|
</div> <!-- id="product" -->
|
||||||
|
|
||||||
|
|
||||||
|
<div id="main">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Menu -->
|
||||||
|
|
||||||
|
<div id="navigation">
|
||||||
|
<br/>
|
||||||
|
<h1>LuaJIT-Sleep</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Contents</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#Features">Features </a></li>
|
||||||
|
<li><a href="#Requirements">Requirements </a></li>
|
||||||
|
<li><a href="#Installation">Installation </a></li>
|
||||||
|
<li><a href="#Example">Example </a></li>
|
||||||
|
<li><a href="#License">License </a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Topics</h2>
|
||||||
|
<ul class="">
|
||||||
|
<li><strong>readme</strong></li>
|
||||||
|
</ul>
|
||||||
|
<h2>Modules</h2>
|
||||||
|
<ul class="nowrap">
|
||||||
|
<li><a href="../index.html">sleep</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
|
||||||
|
|
||||||
|
<h1>LuaJIT - Sleep</h1>
|
||||||
|
<p>Pure LuaJIT bindings and wrappers for native sleep functions on Win32 and Linux.</p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<p><strong>📢 This is library is in low maintenance mode</strong> \
|
||||||
|
I consider it feature-complete, and unless a bug is found, I don't plan on updating it.</p>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
|
||||||
|
<p><a name="Features"></a></p>
|
||||||
|
<h2>Features</h2>
|
||||||
|
<p>* Second-level sleeps
|
||||||
|
* Millisecond-level sleeps
|
||||||
|
* Ability to supress all errors</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p><a name="Requirements"></a></p>
|
||||||
|
<h2>Requirements</h2>
|
||||||
|
<p>* A somewhat modern OS</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
* Windows XP <span class="keyword">or</span> newer *(x86/x64) (Untested on ARM32/ARM64)*
|
||||||
|
* Windows Server <span class="number">2003</span> <span class="keyword">or</span> newer *(x86/x64) (Untested on ARM32/ARM64)*
|
||||||
|
* Linux <span class="number">4.4</span>+ *(x86/x64) (Untested on ARM32/ARM64/RISCV/...)*
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>* <em>LuaJIT v2.1.</em></p>
|
||||||
|
|
||||||
|
|
||||||
|
<p><a name="Installation"></a></p>
|
||||||
|
<h2>Installation</h2>
|
||||||
|
|
||||||
|
<h3>Manual</h3>
|
||||||
|
<p>1. Download the <a href="https://github.com/aziascreations/LuaJIT-Sleep/releases">latest release</a>.
|
||||||
|
2. Extract the content of the archive in your <code>lua/</code> folder.</p>
|
||||||
|
|
||||||
|
<h3>LuaRocks</h3>
|
||||||
|
<p>* TODO: Will be done soon-ish</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p><a name="Example"></a></p>
|
||||||
|
<h2>Example</h2>
|
||||||
|
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<span class="keyword">local</span> sleep_lib = <span class="global">require</span>(<span class="string">"sleep"</span>)
|
||||||
|
|
||||||
|
<span class="global">print</span>(<span class="string">"Now sleeping for 3 seconds..."</span>)
|
||||||
|
|
||||||
|
sleep_lib.<span class="function-name">sleep_s</span>(<span class="number">3</span>)
|
||||||
|
|
||||||
|
<span class="global">print</span>(<span class="string">"Now sleeping for 500 milliseconds..."</span>)
|
||||||
|
|
||||||
|
sleep_lib.<span class="function-name">sleep_ms</span>(<span class="number">500</span>)
|
||||||
|
|
||||||
|
<span class="global">print</span>(<span class="string">"I'm back and awake"</span>)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p><a name="License"></a></p>
|
||||||
|
<h2>License</h2>
|
||||||
|
|
||||||
|
<p>The code in this repository is licensed under
|
||||||
|
<a href="LICENSE">CC0 1.0 Universal (CC0 1.0) (Public Domain)</a>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
</div> <!-- id="content" -->
|
||||||
|
</div> <!-- id="main" -->
|
||||||
|
<div id="about">
|
||||||
|
<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
|
||||||
|
<i style="float:right;">Last updated 2026-04-12 07:30:52 </i>
|
||||||
|
</div> <!-- id="about" -->
|
||||||
|
</div> <!-- id="container" -->
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user