summaryrefslogtreecommitdiffhomepage
path: root/libs/nixio/src/bit.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/nixio/src/bit.c')
-rw-r--r--libs/nixio/src/bit.c149
1 files changed, 0 insertions, 149 deletions
diff --git a/libs/nixio/src/bit.c b/libs/nixio/src/bit.c
deleted file mode 100644
index 1b352c51c5..0000000000
--- a/libs/nixio/src/bit.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * nixio - Linux I/O library for lua
- *
- * Copyright (C) 2009 Steven Barth <steven@midlink.org>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "nixio.h"
-#include <stdint.h>
-#include <stdlib.h>
-
-/* 52 bit maximum precision */
-#ifdef NIXIO_DOUBLE
-#define NIXIO_BIT_BMAX 52
-#define NIXIO_BIT_NMAX 0xfffffffffffff
-#else
-#define NIXIO_BIT_BMAX 32
-#define NIXIO_BIT_NMAX 0xffffffff
-#endif
-
-#define NIXIO_BIT_XOP(BIT_XOP) \
- uint64_t oper = nixio__checknumber(L, 1); \
- const int args = lua_gettop(L); \
- \
- for (int i = 2; i <= args; i++) { \
- uint64_t oper2 = nixio__checknumber(L, i); \
- oper BIT_XOP oper2; \
- } \
- \
- nixio__pushnumber(L, oper); \
- return 1; \
-
-
-static int nixio_bit_or(lua_State *L) {
- NIXIO_BIT_XOP(|=);
-}
-
-static int nixio_bit_and(lua_State *L) {
- NIXIO_BIT_XOP(&=);
-}
-
-static int nixio_bit_xor(lua_State *L) {
- NIXIO_BIT_XOP(^=);
-}
-
-static int nixio_bit_unset(lua_State *L) {
- NIXIO_BIT_XOP(&= ~);
-}
-
-static int nixio_bit_not(lua_State *L) {
- nixio__pushnumber(L,
- (~((uint64_t)nixio__checknumber(L, 1))) & NIXIO_BIT_NMAX);
- return 1;
-}
-
-static int nixio_bit_shl(lua_State *L) {
- uint64_t oper = nixio__checknumber(L, 1);
- oper <<= luaL_checkinteger(L, 2);
- if (oper > NIXIO_BIT_NMAX) {
- return luaL_error(L, "arithmetic overflow");
- } else {
- nixio__pushnumber(L, oper);
- return 1;
- }
-}
-
-static int nixio_bit_ashr(lua_State *L) {
- int64_t oper = nixio__checknumber(L, 1);
- nixio__pushnumber(L, oper >> luaL_checkinteger(L, 2));
- return 1;
-}
-
-static int nixio_bit_shr(lua_State *L) {
- uint64_t oper = nixio__checknumber(L, 1);
- nixio__pushnumber(L, oper >> luaL_checkinteger(L, 2));
- return 1;
-}
-
-static int nixio_bit_div(lua_State *L) {
- uint64_t oper = luaL_checknumber(L, 1);
- const int args = lua_gettop(L);
-
- for (int i = 2; i <= args; i++) {
- uint64_t oper2 = nixio__checknumber(L, i);
- oper /= oper2;
- }
-
- nixio__pushnumber(L, oper);
- return 1;
-}
-
-static int nixio_bit_check(lua_State *L) {
- uint64_t oper = nixio__checknumber(L, 1);
- uint64_t oper2 = nixio__checknumber(L, 2);
- lua_pushboolean(L, (oper & oper2) == oper2);
- return 1;
-}
-
-static int nixio_bit_cast(lua_State *L) {
- nixio__pushnumber(L, ((uint64_t)nixio__checknumber(L, 1)) & NIXIO_BIT_NMAX);
- return 1;
-}
-
-static int nixio_bit_swap(lua_State *L) {
- uint64_t op = nixio__checknumber(L, 1);
- op = (op >> 24) | ((op >> 8) & 0xff00) | ((op & 0xff00) << 8) | (op << 24);
- nixio__pushnumber(L, op);
- return 1;
-}
-
-/* module table */
-static const luaL_reg R[] = {
- {"bor", nixio_bit_or},
- {"set", nixio_bit_or},
- {"band", nixio_bit_and},
- {"bxor", nixio_bit_xor},
- {"unset", nixio_bit_unset},
- {"bnot", nixio_bit_not},
- {"rshift", nixio_bit_shr},
- {"arshift", nixio_bit_ashr},
- {"lshift", nixio_bit_shl},
- {"div", nixio_bit_div},
- {"check", nixio_bit_check},
- {"cast", nixio_bit_cast},
- {"tobit", nixio_bit_cast},
- {"bswap", nixio_bit_swap},
- {NULL, NULL}
-};
-
-void nixio_open_bit(lua_State *L) {
- lua_newtable(L);
- luaL_register(L, NULL, R);
- nixio__pushnumber(L, NIXIO_BIT_BMAX);
- lua_setfield(L, -2, "bits");
- nixio__pushnumber(L, NIXIO_BIT_NMAX);
- lua_setfield(L, -2, "max");
- lua_setfield(L, -2, "bit");
-}