Import luabins 831869cdc8c5e7579804e6472a2dc6cbe0b2672b
This commit is contained in:
parent
cf81e91383
commit
b4801ef1bb
52 changed files with 5222 additions and 0 deletions
4
vendor/luabins/AUTHORS
vendored
Normal file
4
vendor/luabins/AUTHORS
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
Luabins authors:
|
||||
----------------
|
||||
|
||||
Alexander Gladysh <agladysh@gmail.com>
|
51
vendor/luabins/BENCHMARK
vendored
Normal file
51
vendor/luabins/BENCHMARK
vendored
Normal file
|
@ -0,0 +1,51 @@
|
|||
Luabins 0.2 benchmark (see etc/benchmark.lua) results on
|
||||
|
||||
MacBook Pro 2.4 GHz Intel Core Duo 2.66 MB DDR2 SDRAM
|
||||
OS X 10.6.2
|
||||
GCC 4.2.1 (Apple Inc. build 5646) (dot 1)
|
||||
Lua 5.1.4 from MacPorts
|
||||
Luabins built with default Makefile configuration
|
||||
|
||||
Note that the data used in benchmark is quite trivial. You're advised
|
||||
to find out if Luabins is "fast enough" for you by yourself.
|
||||
|
||||
Lua
|
||||
-------------------------------------------------------------------
|
||||
name | rel | abs s / iter = us (1e-6 s) / iter
|
||||
-------------------------------------------------------------------
|
||||
luabins_save | 1.0000 | 4.21 / 1000000 = 4.210000 us
|
||||
luabins_load | 1.2043 | 5.07 / 1000000 = 5.070000 us
|
||||
loadstring | 4.7435 | 19.97 / 1000000 = 19.970000 us
|
||||
concat | 10.6413 | 44.80 / 1000000 = 44.800000 us
|
||||
|
||||
===================================================================
|
||||
|
||||
Luabins 0.1 benchmark (see etc/benchmark.lua) results on
|
||||
|
||||
MacBook Pro 2.4 GHz Intel Core Duo 2.66 MB DDR2 SDRAM
|
||||
OS X 10.5.6
|
||||
GCC 4.0.1 (Apple Inc. build 5490)
|
||||
Lua 5.1.4 from MacPorts
|
||||
LuaJIT 1.1.3 built from sources with default configuration
|
||||
Luabins built with default configuration
|
||||
|
||||
Note that the data used in benchmark is quite trivial. You're advised
|
||||
to find out if Luabins is "fast enough" for you by yourself.
|
||||
|
||||
Lua
|
||||
-------------------------------------------------------------------
|
||||
name | rel | abs s / iter = us (1e-6 s) / iter
|
||||
-------------------------------------------------------------------
|
||||
luabins_load | 1.0000 | 6.34 / 1000000 = 6.340000 us
|
||||
luabins_save | 1.7256 | 10.94 / 1000000 = 10.940000 us
|
||||
loadstring | 3.6530 | 23.16 / 1000000 = 23.160000 us
|
||||
concat | 10.0741 | 63.87 / 1000000 = 63.870000 us
|
||||
|
||||
LuaJIT -O
|
||||
-------------------------------------------------------------------
|
||||
name | rel | abs s / iter = us (1e-6 s) / iter
|
||||
-------------------------------------------------------------------
|
||||
luabins_load | 1.0000 | 5.40 / 1000000 = 5.400000 us
|
||||
luabins_save | 1.6111 | 8.70 / 1000000 = 8.700000 us
|
||||
concat | 6.6630 | 35.98 / 1000000 = 35.980000 us
|
||||
loadstring | 23.6370 | 127.64 / 1000000 = 127.640000 us
|
32
vendor/luabins/COPYRIGHT
vendored
Normal file
32
vendor/luabins/COPYRIGHT
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
Luabins License
|
||||
---------------
|
||||
|
||||
Luabins is licensed under the terms of the MIT license reproduced below.
|
||||
This means that luabins is free software and can be used for both academic
|
||||
and commercial purposes at absolutely no cost.
|
||||
|
||||
===============================================================================
|
||||
|
||||
Copyright (C) 2009-2010 Luabins authors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(end of COPYRIGHT)
|
47
vendor/luabins/HISTORY
vendored
Normal file
47
vendor/luabins/HISTORY
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
v0.3
|
||||
====
|
||||
|
||||
Format unification for x86 and x86_64. Bug fixes.
|
||||
|
||||
WARNING: Format is not compatible with 0.2 and below.
|
||||
Only data saved on x86_64 is affected, though.
|
||||
Data, saved on x86, should load fine.
|
||||
|
||||
New features:
|
||||
|
||||
-- Format change: unified save format for x86 vs. x86_64.
|
||||
-- API to save data to FILE * stream without Lua (see fwrite.h).
|
||||
|
||||
Bug fixes:
|
||||
|
||||
-- Load: fixed bug in readbyte, now it checks if we have data before read.
|
||||
-- Load: fixed Lua C stack overflow bug on large data.
|
||||
|
||||
Misc:
|
||||
|
||||
-- Better module information.
|
||||
Replaced luabins.VERSION with _VERSION, _DESCRIPTION and _COPYRIGHT.
|
||||
-- Added some CLI tools, useful for Luabins development (see etc/).
|
||||
-- Some code cleanup.
|
||||
|
||||
v0.2
|
||||
====
|
||||
|
||||
Lua-less saving.
|
||||
|
||||
-- New, 2x faster luabins.save() (see BENCHMARK).
|
||||
-- API to save data manually, without Lua (see write.h).
|
||||
-- Added Luarocks rockspecs (see rockspec/).
|
||||
-- Fixed Makefile for Ubuntu.
|
||||
|
||||
v0.1.1
|
||||
======
|
||||
|
||||
Bugfix release.
|
||||
|
||||
-- Fixed handling of array holes in Lua tables.
|
||||
|
||||
v0.1
|
||||
====
|
||||
|
||||
Initial release.
|
469
vendor/luabins/Makefile
vendored
Normal file
469
vendor/luabins/Makefile
vendored
Normal file
|
@ -0,0 +1,469 @@
|
|||
## CONFIGURATION ##############################################################
|
||||
|
||||
ifeq ($(shell uname),Darwin)
|
||||
LUA_DIR := /usr/local
|
||||
LUA_LIBDIR := $(LUA_DIR)/lib/lua/5.1
|
||||
LUA_INCDIR := $(LUA_DIR)/include
|
||||
LUALIB := lua
|
||||
else
|
||||
# Assuming Ubuntu
|
||||
LUA_LIBDIR := /usr/lib
|
||||
LUA_INCDIR := /usr/include/lua5.1
|
||||
LUALIB := lua5.1
|
||||
endif
|
||||
|
||||
PROJECTNAME := luabins
|
||||
|
||||
SONAME := $(PROJECTNAME).so
|
||||
ANAME := lib$(PROJECTNAME).a
|
||||
HNAME := $(PROJECTNAME).h
|
||||
TESTNAME := $(PROJECTNAME)-test
|
||||
TESTLUA := test.lua
|
||||
|
||||
LUA := lua
|
||||
CP := cp
|
||||
RM := rm -f
|
||||
RMDIR := rm -df
|
||||
MKDIR := mkdir -p
|
||||
CC := gcc
|
||||
LD := gcc
|
||||
AR := ar rcu
|
||||
RANLIB := ranlib
|
||||
ECHO := @echo
|
||||
TOUCH := touch
|
||||
|
||||
# Needed for tests only
|
||||
CXX := g++
|
||||
LDXX := g++
|
||||
|
||||
OBJDIR := ./obj
|
||||
TMPDIR := ./tmp
|
||||
INCDIR := ./include
|
||||
LIBDIR := ./lib
|
||||
|
||||
HFILE := $(INCDIR)/$(HNAME)
|
||||
|
||||
CFLAGS += -O2 -Wall -I$(LUA_INCDIR)
|
||||
LDFLAGS += -L$(LUA_LIBDIR)
|
||||
|
||||
# Tested on OS X and Ubuntu
|
||||
SOFLAGS :=
|
||||
ifeq ($(shell uname),Darwin)
|
||||
SOFLAGS += -dynamiclib -undefined dynamic_lookup
|
||||
else
|
||||
CFLAGS += -fPIC
|
||||
SOFLAGS += -shared
|
||||
LDFLAGS += -ldl
|
||||
RMDIR := rm -rf
|
||||
endif
|
||||
|
||||
CFLAGS += $(MYCFLAGS)
|
||||
LDFLAGS += $(MYLDFLAGS)
|
||||
|
||||
## MAIN TARGETS ###############################################################
|
||||
|
||||
all: $(LIBDIR)/$(SONAME) $(LIBDIR)/$(ANAME) $(HFILE)
|
||||
|
||||
clean: cleanlibs cleantest
|
||||
$(RM) $(HFILE)
|
||||
|
||||
install: $(LIBDIR)/$(SONAME)
|
||||
# Note header and static library are not copied anywhere
|
||||
$(CP) $(LIBDIR)/$(SONAME) $(LUA_LIBDIR)/$(SONAME)
|
||||
|
||||
$(HFILE):
|
||||
$(CP) src/$(HNAME) $(HFILE)
|
||||
|
||||
## GENERATED RELEASE TARGETS ##################################################
|
||||
|
||||
cleanlibs: cleanobjects
|
||||
$(RM) $(LIBDIR)/$(SONAME)
|
||||
$(RM) $(LIBDIR)/$(ANAME)
|
||||
|
||||
$(LIBDIR)/$(SONAME): $(OBJDIR)/fwrite.o $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/lualess.o $(OBJDIR)/save.o $(OBJDIR)/savebuffer.o $(OBJDIR)/write.o
|
||||
$(MKDIR) $(LIBDIR)
|
||||
$(LD) -o $@ $(OBJDIR)/fwrite.o $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/lualess.o $(OBJDIR)/save.o $(OBJDIR)/savebuffer.o $(OBJDIR)/write.o $(LDFLAGS) $(SOFLAGS)
|
||||
|
||||
$(LIBDIR)/$(ANAME): $(OBJDIR)/fwrite.o $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/lualess.o $(OBJDIR)/save.o $(OBJDIR)/savebuffer.o $(OBJDIR)/write.o
|
||||
$(MKDIR) $(LIBDIR)
|
||||
$(AR) $@ $(OBJDIR)/fwrite.o $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/lualess.o $(OBJDIR)/save.o $(OBJDIR)/savebuffer.o $(OBJDIR)/write.o
|
||||
$(RANLIB) $@
|
||||
|
||||
# objects:
|
||||
|
||||
cleanobjects:
|
||||
$(RM) $(OBJDIR)/fwrite.o $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/lualess.o $(OBJDIR)/save.o $(OBJDIR)/savebuffer.o $(OBJDIR)/write.o
|
||||
|
||||
$(OBJDIR)/fwrite.o: src/fwrite.c src/luaheaders.h src/fwrite.h \
|
||||
src/saveload.h
|
||||
$(CC) $(CFLAGS) -o $@ -c src/fwrite.c
|
||||
|
||||
$(OBJDIR)/load.o: src/load.c src/luaheaders.h src/luabins.h \
|
||||
src/saveload.h src/luainternals.h
|
||||
$(CC) $(CFLAGS) -o $@ -c src/load.c
|
||||
|
||||
$(OBJDIR)/luabins.o: src/luabins.c src/luaheaders.h src/luabins.h
|
||||
$(CC) $(CFLAGS) -o $@ -c src/luabins.c
|
||||
|
||||
$(OBJDIR)/luainternals.o: src/luainternals.c src/luainternals.h
|
||||
$(CC) $(CFLAGS) -o $@ -c src/luainternals.c
|
||||
|
||||
$(OBJDIR)/lualess.o: src/lualess.c
|
||||
$(CC) $(CFLAGS) -o $@ -c src/lualess.c
|
||||
|
||||
$(OBJDIR)/save.o: src/save.c src/luaheaders.h src/luabins.h \
|
||||
src/saveload.h src/savebuffer.h src/write.h
|
||||
$(CC) $(CFLAGS) -o $@ -c src/save.c
|
||||
|
||||
$(OBJDIR)/savebuffer.o: src/savebuffer.c src/luaheaders.h \
|
||||
src/saveload.h src/savebuffer.h
|
||||
$(CC) $(CFLAGS) -o $@ -c src/savebuffer.c
|
||||
|
||||
$(OBJDIR)/write.o: src/write.c src/luaheaders.h src/write.h \
|
||||
src/saveload.h src/savebuffer.h
|
||||
$(CC) $(CFLAGS) -o $@ -c src/write.c
|
||||
|
||||
## TEST TARGETS ###############################################################
|
||||
|
||||
test: testc89 testc99 testc++98
|
||||
$(ECHO) "===== TESTS PASSED ====="
|
||||
|
||||
resettest: resettestc89 resettestc99 resettestc++98
|
||||
|
||||
cleantest: cleantestc89 cleantestc99 cleantestc++98
|
||||
|
||||
## GENERATED TEST TARGETS #####################################################
|
||||
|
||||
## ----- Begin c89 -----
|
||||
|
||||
testc89: lua-testsc89 c-testsc89
|
||||
|
||||
lua-testsc89: $(TMPDIR)/c89/.luatestspassed
|
||||
|
||||
c-testsc89: $(TMPDIR)/c89/.ctestspassed
|
||||
|
||||
$(TMPDIR)/c89/.luatestspassed: $(TMPDIR)/c89/$(SONAME) test/$(TESTLUA)
|
||||
$(ECHO) "===== Running Lua tests for c89 ====="
|
||||
@$(LUA) \
|
||||
-e "package.cpath='$(TMPDIR)/c89/$(SONAME);'..package.cpath" \
|
||||
test/$(TESTLUA)
|
||||
$(TOUCH) $(TMPDIR)/c89/.luatestspassed
|
||||
$(ECHO) "===== Lua tests for c89 PASSED ====="
|
||||
|
||||
$(TMPDIR)/c89/.ctestspassed: $(TMPDIR)/c89/$(TESTNAME) test/$(TESTLUA)
|
||||
$(ECHO) "===== Running C tests for c89 ====="
|
||||
$(TMPDIR)/c89/$(TESTNAME)
|
||||
$(TOUCH) $(TMPDIR)/c89/.ctestspassed
|
||||
$(ECHO) "===== C tests for c89 PASSED ====="
|
||||
|
||||
$(TMPDIR)/c89/$(TESTNAME): $(OBJDIR)/c89-test.o $(OBJDIR)/c89-test_api.o $(OBJDIR)/c89-test_fwrite_api.o $(OBJDIR)/c89-test_savebuffer.o $(OBJDIR)/c89-test_write_api.o $(OBJDIR)/c89-util.o $(TMPDIR)/c89/$(ANAME)
|
||||
$(MKDIR) $(TMPDIR)/c89
|
||||
$(LD) -o $@ $(OBJDIR)/c89-test.o $(OBJDIR)/c89-test_api.o $(OBJDIR)/c89-test_fwrite_api.o $(OBJDIR)/c89-test_savebuffer.o $(OBJDIR)/c89-test_write_api.o $(OBJDIR)/c89-util.o $(LDFLAGS) -lm -l$(LUALIB) -l$(PROJECTNAME) -L$(TMPDIR)/c89
|
||||
|
||||
resettestc89:
|
||||
$(RM) $(TMPDIR)/c89/.luatestspassed
|
||||
$(RM) $(TMPDIR)/c89/.ctestspassed
|
||||
|
||||
cleantestc89: cleanlibsc89 resettestc89 \
|
||||
cleantestobjectsc89
|
||||
$(RM) $(TMPDIR)/c89/$(TESTNAME)
|
||||
$(RMDIR) $(TMPDIR)/c89
|
||||
|
||||
# testobjectsc89:
|
||||
|
||||
cleantestobjectsc89:
|
||||
$(RM) $(OBJDIR)/c89-test.o $(OBJDIR)/c89-test_api.o $(OBJDIR)/c89-test_fwrite_api.o $(OBJDIR)/c89-test_savebuffer.o $(OBJDIR)/c89-test_write_api.o $(OBJDIR)/c89-util.o
|
||||
|
||||
$(OBJDIR)/c89-test.o: test/test.c test/test.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -Isrc/ -o $@ -c test/test.c
|
||||
|
||||
$(OBJDIR)/c89-test_api.o: test/test_api.c src/luabins.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -Isrc/ -o $@ -c test/test_api.c
|
||||
|
||||
$(OBJDIR)/c89-test_fwrite_api.o: test/test_fwrite_api.c src/lualess.h \
|
||||
src/fwrite.h src/saveload.h test/test.h test/util.h \
|
||||
test/write_tests.inc
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -Isrc/ -o $@ -c test/test_fwrite_api.c
|
||||
|
||||
$(OBJDIR)/c89-test_savebuffer.o: test/test_savebuffer.c src/lualess.h \
|
||||
src/savebuffer.h test/test.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -Isrc/ -o $@ -c test/test_savebuffer.c
|
||||
|
||||
$(OBJDIR)/c89-test_write_api.o: test/test_write_api.c src/lualess.h \
|
||||
src/write.h src/saveload.h src/savebuffer.h test/test.h test/util.h \
|
||||
test/write_tests.inc
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -Isrc/ -o $@ -c test/test_write_api.c
|
||||
|
||||
$(OBJDIR)/c89-util.o: test/util.c test/util.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -Isrc/ -o $@ -c test/util.c
|
||||
|
||||
cleanlibsc89: cleanobjectsc89
|
||||
$(RM) $(TMPDIR)/c89/$(SONAME)
|
||||
$(RM) $(TMPDIR)/c89/$(ANAME)
|
||||
|
||||
$(TMPDIR)/c89/$(SONAME): $(OBJDIR)/c89-fwrite.o $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-lualess.o $(OBJDIR)/c89-save.o $(OBJDIR)/c89-savebuffer.o $(OBJDIR)/c89-write.o
|
||||
$(MKDIR) $(TMPDIR)/c89
|
||||
$(LD) -o $@ $(OBJDIR)/c89-fwrite.o $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-lualess.o $(OBJDIR)/c89-save.o $(OBJDIR)/c89-savebuffer.o $(OBJDIR)/c89-write.o $(LDFLAGS) $(SOFLAGS)
|
||||
|
||||
$(TMPDIR)/c89/$(ANAME): $(OBJDIR)/c89-fwrite.o $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-lualess.o $(OBJDIR)/c89-save.o $(OBJDIR)/c89-savebuffer.o $(OBJDIR)/c89-write.o
|
||||
$(MKDIR) $(TMPDIR)/c89
|
||||
$(AR) $@ $(OBJDIR)/c89-fwrite.o $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-lualess.o $(OBJDIR)/c89-save.o $(OBJDIR)/c89-savebuffer.o $(OBJDIR)/c89-write.o
|
||||
$(RANLIB) $@
|
||||
|
||||
# objectsc89:
|
||||
|
||||
cleanobjectsc89:
|
||||
$(RM) $(OBJDIR)/c89-fwrite.o $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-lualess.o $(OBJDIR)/c89-save.o $(OBJDIR)/c89-savebuffer.o $(OBJDIR)/c89-write.o
|
||||
|
||||
$(OBJDIR)/c89-fwrite.o: src/fwrite.c src/luaheaders.h src/fwrite.h \
|
||||
src/saveload.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/fwrite.c
|
||||
|
||||
$(OBJDIR)/c89-load.o: src/load.c src/luaheaders.h src/luabins.h \
|
||||
src/saveload.h src/luainternals.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/load.c
|
||||
|
||||
$(OBJDIR)/c89-luabins.o: src/luabins.c src/luaheaders.h src/luabins.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/luabins.c
|
||||
|
||||
$(OBJDIR)/c89-luainternals.o: src/luainternals.c src/luainternals.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/luainternals.c
|
||||
|
||||
$(OBJDIR)/c89-lualess.o: src/lualess.c
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/lualess.c
|
||||
|
||||
$(OBJDIR)/c89-save.o: src/save.c src/luaheaders.h src/luabins.h \
|
||||
src/saveload.h src/savebuffer.h src/write.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/save.c
|
||||
|
||||
$(OBJDIR)/c89-savebuffer.o: src/savebuffer.c src/luaheaders.h \
|
||||
src/saveload.h src/savebuffer.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/savebuffer.c
|
||||
|
||||
$(OBJDIR)/c89-write.o: src/write.c src/luaheaders.h src/write.h \
|
||||
src/saveload.h src/savebuffer.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/write.c
|
||||
|
||||
## ----- Begin c99 -----
|
||||
|
||||
testc99: lua-testsc99 c-testsc99
|
||||
|
||||
lua-testsc99: $(TMPDIR)/c99/.luatestspassed
|
||||
|
||||
c-testsc99: $(TMPDIR)/c99/.ctestspassed
|
||||
|
||||
$(TMPDIR)/c99/.luatestspassed: $(TMPDIR)/c99/$(SONAME) test/$(TESTLUA)
|
||||
$(ECHO) "===== Running Lua tests for c99 ====="
|
||||
@$(LUA) \
|
||||
-e "package.cpath='$(TMPDIR)/c99/$(SONAME);'..package.cpath" \
|
||||
test/$(TESTLUA)
|
||||
$(TOUCH) $(TMPDIR)/c99/.luatestspassed
|
||||
$(ECHO) "===== Lua tests for c99 PASSED ====="
|
||||
|
||||
$(TMPDIR)/c99/.ctestspassed: $(TMPDIR)/c99/$(TESTNAME) test/$(TESTLUA)
|
||||
$(ECHO) "===== Running C tests for c99 ====="
|
||||
$(TMPDIR)/c99/$(TESTNAME)
|
||||
$(TOUCH) $(TMPDIR)/c99/.ctestspassed
|
||||
$(ECHO) "===== C tests for c99 PASSED ====="
|
||||
|
||||
$(TMPDIR)/c99/$(TESTNAME): $(OBJDIR)/c99-test.o $(OBJDIR)/c99-test_api.o $(OBJDIR)/c99-test_fwrite_api.o $(OBJDIR)/c99-test_savebuffer.o $(OBJDIR)/c99-test_write_api.o $(OBJDIR)/c99-util.o $(TMPDIR)/c99/$(ANAME)
|
||||
$(MKDIR) $(TMPDIR)/c99
|
||||
$(LD) -o $@ $(OBJDIR)/c99-test.o $(OBJDIR)/c99-test_api.o $(OBJDIR)/c99-test_fwrite_api.o $(OBJDIR)/c99-test_savebuffer.o $(OBJDIR)/c99-test_write_api.o $(OBJDIR)/c99-util.o $(LDFLAGS) -lm -l$(LUALIB) -l$(PROJECTNAME) -L$(TMPDIR)/c99
|
||||
|
||||
resettestc99:
|
||||
$(RM) $(TMPDIR)/c99/.luatestspassed
|
||||
$(RM) $(TMPDIR)/c99/.ctestspassed
|
||||
|
||||
cleantestc99: cleanlibsc99 resettestc99 \
|
||||
cleantestobjectsc99
|
||||
$(RM) $(TMPDIR)/c99/$(TESTNAME)
|
||||
$(RMDIR) $(TMPDIR)/c99
|
||||
|
||||
# testobjectsc99:
|
||||
|
||||
cleantestobjectsc99:
|
||||
$(RM) $(OBJDIR)/c99-test.o $(OBJDIR)/c99-test_api.o $(OBJDIR)/c99-test_fwrite_api.o $(OBJDIR)/c99-test_savebuffer.o $(OBJDIR)/c99-test_write_api.o $(OBJDIR)/c99-util.o
|
||||
|
||||
$(OBJDIR)/c99-test.o: test/test.c test/test.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -Isrc/ -o $@ -c test/test.c
|
||||
|
||||
$(OBJDIR)/c99-test_api.o: test/test_api.c src/luabins.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -Isrc/ -o $@ -c test/test_api.c
|
||||
|
||||
$(OBJDIR)/c99-test_fwrite_api.o: test/test_fwrite_api.c src/lualess.h \
|
||||
src/fwrite.h src/saveload.h test/test.h test/util.h \
|
||||
test/write_tests.inc
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -Isrc/ -o $@ -c test/test_fwrite_api.c
|
||||
|
||||
$(OBJDIR)/c99-test_savebuffer.o: test/test_savebuffer.c src/lualess.h \
|
||||
src/savebuffer.h test/test.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -Isrc/ -o $@ -c test/test_savebuffer.c
|
||||
|
||||
$(OBJDIR)/c99-test_write_api.o: test/test_write_api.c src/lualess.h \
|
||||
src/write.h src/saveload.h src/savebuffer.h test/test.h test/util.h \
|
||||
test/write_tests.inc
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -Isrc/ -o $@ -c test/test_write_api.c
|
||||
|
||||
$(OBJDIR)/c99-util.o: test/util.c test/util.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -Isrc/ -o $@ -c test/util.c
|
||||
|
||||
cleanlibsc99: cleanobjectsc99
|
||||
$(RM) $(TMPDIR)/c99/$(SONAME)
|
||||
$(RM) $(TMPDIR)/c99/$(ANAME)
|
||||
|
||||
$(TMPDIR)/c99/$(SONAME): $(OBJDIR)/c99-fwrite.o $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-lualess.o $(OBJDIR)/c99-save.o $(OBJDIR)/c99-savebuffer.o $(OBJDIR)/c99-write.o
|
||||
$(MKDIR) $(TMPDIR)/c99
|
||||
$(LD) -o $@ $(OBJDIR)/c99-fwrite.o $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-lualess.o $(OBJDIR)/c99-save.o $(OBJDIR)/c99-savebuffer.o $(OBJDIR)/c99-write.o $(LDFLAGS) $(SOFLAGS)
|
||||
|
||||
$(TMPDIR)/c99/$(ANAME): $(OBJDIR)/c99-fwrite.o $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-lualess.o $(OBJDIR)/c99-save.o $(OBJDIR)/c99-savebuffer.o $(OBJDIR)/c99-write.o
|
||||
$(MKDIR) $(TMPDIR)/c99
|
||||
$(AR) $@ $(OBJDIR)/c99-fwrite.o $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-lualess.o $(OBJDIR)/c99-save.o $(OBJDIR)/c99-savebuffer.o $(OBJDIR)/c99-write.o
|
||||
$(RANLIB) $@
|
||||
|
||||
# objectsc99:
|
||||
|
||||
cleanobjectsc99:
|
||||
$(RM) $(OBJDIR)/c99-fwrite.o $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-lualess.o $(OBJDIR)/c99-save.o $(OBJDIR)/c99-savebuffer.o $(OBJDIR)/c99-write.o
|
||||
|
||||
$(OBJDIR)/c99-fwrite.o: src/fwrite.c src/luaheaders.h src/fwrite.h \
|
||||
src/saveload.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/fwrite.c
|
||||
|
||||
$(OBJDIR)/c99-load.o: src/load.c src/luaheaders.h src/luabins.h \
|
||||
src/saveload.h src/luainternals.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/load.c
|
||||
|
||||
$(OBJDIR)/c99-luabins.o: src/luabins.c src/luaheaders.h src/luabins.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/luabins.c
|
||||
|
||||
$(OBJDIR)/c99-luainternals.o: src/luainternals.c src/luainternals.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/luainternals.c
|
||||
|
||||
$(OBJDIR)/c99-lualess.o: src/lualess.c
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/lualess.c
|
||||
|
||||
$(OBJDIR)/c99-save.o: src/save.c src/luaheaders.h src/luabins.h \
|
||||
src/saveload.h src/savebuffer.h src/write.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/save.c
|
||||
|
||||
$(OBJDIR)/c99-savebuffer.o: src/savebuffer.c src/luaheaders.h \
|
||||
src/saveload.h src/savebuffer.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/savebuffer.c
|
||||
|
||||
$(OBJDIR)/c99-write.o: src/write.c src/luaheaders.h src/write.h \
|
||||
src/saveload.h src/savebuffer.h
|
||||
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/write.c
|
||||
|
||||
## ----- Begin c++98 -----
|
||||
|
||||
testc++98: lua-testsc++98 c-testsc++98
|
||||
|
||||
lua-testsc++98: $(TMPDIR)/c++98/.luatestspassed
|
||||
|
||||
c-testsc++98: $(TMPDIR)/c++98/.ctestspassed
|
||||
|
||||
$(TMPDIR)/c++98/.luatestspassed: $(TMPDIR)/c++98/$(SONAME) test/$(TESTLUA)
|
||||
$(ECHO) "===== Running Lua tests for c++98 ====="
|
||||
@$(LUA) \
|
||||
-e "package.cpath='$(TMPDIR)/c++98/$(SONAME);'..package.cpath" \
|
||||
test/$(TESTLUA)
|
||||
$(TOUCH) $(TMPDIR)/c++98/.luatestspassed
|
||||
$(ECHO) "===== Lua tests for c++98 PASSED ====="
|
||||
|
||||
$(TMPDIR)/c++98/.ctestspassed: $(TMPDIR)/c++98/$(TESTNAME) test/$(TESTLUA)
|
||||
$(ECHO) "===== Running C tests for c++98 ====="
|
||||
$(TMPDIR)/c++98/$(TESTNAME)
|
||||
$(TOUCH) $(TMPDIR)/c++98/.ctestspassed
|
||||
$(ECHO) "===== C tests for c++98 PASSED ====="
|
||||
|
||||
$(TMPDIR)/c++98/$(TESTNAME): $(OBJDIR)/c++98-test.o $(OBJDIR)/c++98-test_api.o $(OBJDIR)/c++98-test_fwrite_api.o $(OBJDIR)/c++98-test_savebuffer.o $(OBJDIR)/c++98-test_write_api.o $(OBJDIR)/c++98-util.o $(TMPDIR)/c++98/$(ANAME)
|
||||
$(MKDIR) $(TMPDIR)/c++98
|
||||
$(LDXX) -o $@ $(OBJDIR)/c++98-test.o $(OBJDIR)/c++98-test_api.o $(OBJDIR)/c++98-test_fwrite_api.o $(OBJDIR)/c++98-test_savebuffer.o $(OBJDIR)/c++98-test_write_api.o $(OBJDIR)/c++98-util.o $(LDFLAGS) -lm -l$(LUALIB) -l$(PROJECTNAME) -L$(TMPDIR)/c++98
|
||||
|
||||
resettestc++98:
|
||||
$(RM) $(TMPDIR)/c++98/.luatestspassed
|
||||
$(RM) $(TMPDIR)/c++98/.ctestspassed
|
||||
|
||||
cleantestc++98: cleanlibsc++98 resettestc++98 \
|
||||
cleantestobjectsc++98
|
||||
$(RM) $(TMPDIR)/c++98/$(TESTNAME)
|
||||
$(RMDIR) $(TMPDIR)/c++98
|
||||
|
||||
# testobjectsc++98:
|
||||
|
||||
cleantestobjectsc++98:
|
||||
$(RM) $(OBJDIR)/c++98-test.o $(OBJDIR)/c++98-test_api.o $(OBJDIR)/c++98-test_fwrite_api.o $(OBJDIR)/c++98-test_savebuffer.o $(OBJDIR)/c++98-test_write_api.o $(OBJDIR)/c++98-util.o
|
||||
|
||||
$(OBJDIR)/c++98-test.o: test/test.c test/test.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -Isrc/ -o $@ -c test/test.c
|
||||
|
||||
$(OBJDIR)/c++98-test_api.o: test/test_api.c src/luabins.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -Isrc/ -o $@ -c test/test_api.c
|
||||
|
||||
$(OBJDIR)/c++98-test_fwrite_api.o: test/test_fwrite_api.c src/lualess.h \
|
||||
src/fwrite.h src/saveload.h test/test.h test/util.h \
|
||||
test/write_tests.inc
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -Isrc/ -o $@ -c test/test_fwrite_api.c
|
||||
|
||||
$(OBJDIR)/c++98-test_savebuffer.o: test/test_savebuffer.c src/lualess.h \
|
||||
src/savebuffer.h test/test.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -Isrc/ -o $@ -c test/test_savebuffer.c
|
||||
|
||||
$(OBJDIR)/c++98-test_write_api.o: test/test_write_api.c src/lualess.h \
|
||||
src/write.h src/saveload.h src/savebuffer.h test/test.h test/util.h \
|
||||
test/write_tests.inc
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -Isrc/ -o $@ -c test/test_write_api.c
|
||||
|
||||
$(OBJDIR)/c++98-util.o: test/util.c test/util.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -Isrc/ -o $@ -c test/util.c
|
||||
|
||||
cleanlibsc++98: cleanobjectsc++98
|
||||
$(RM) $(TMPDIR)/c++98/$(SONAME)
|
||||
$(RM) $(TMPDIR)/c++98/$(ANAME)
|
||||
|
||||
$(TMPDIR)/c++98/$(SONAME): $(OBJDIR)/c++98-fwrite.o $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-lualess.o $(OBJDIR)/c++98-save.o $(OBJDIR)/c++98-savebuffer.o $(OBJDIR)/c++98-write.o
|
||||
$(MKDIR) $(TMPDIR)/c++98
|
||||
$(LDXX) -o $@ $(OBJDIR)/c++98-fwrite.o $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-lualess.o $(OBJDIR)/c++98-save.o $(OBJDIR)/c++98-savebuffer.o $(OBJDIR)/c++98-write.o $(LDFLAGS) $(SOFLAGS)
|
||||
|
||||
$(TMPDIR)/c++98/$(ANAME): $(OBJDIR)/c++98-fwrite.o $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-lualess.o $(OBJDIR)/c++98-save.o $(OBJDIR)/c++98-savebuffer.o $(OBJDIR)/c++98-write.o
|
||||
$(MKDIR) $(TMPDIR)/c++98
|
||||
$(AR) $@ $(OBJDIR)/c++98-fwrite.o $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-lualess.o $(OBJDIR)/c++98-save.o $(OBJDIR)/c++98-savebuffer.o $(OBJDIR)/c++98-write.o
|
||||
$(RANLIB) $@
|
||||
|
||||
# objectsc++98:
|
||||
|
||||
cleanobjectsc++98:
|
||||
$(RM) $(OBJDIR)/c++98-fwrite.o $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-lualess.o $(OBJDIR)/c++98-save.o $(OBJDIR)/c++98-savebuffer.o $(OBJDIR)/c++98-write.o
|
||||
|
||||
$(OBJDIR)/c++98-fwrite.o: src/fwrite.c src/luaheaders.h src/fwrite.h \
|
||||
src/saveload.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/fwrite.c
|
||||
|
||||
$(OBJDIR)/c++98-load.o: src/load.c src/luaheaders.h src/luabins.h \
|
||||
src/saveload.h src/luainternals.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/load.c
|
||||
|
||||
$(OBJDIR)/c++98-luabins.o: src/luabins.c src/luaheaders.h src/luabins.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/luabins.c
|
||||
|
||||
$(OBJDIR)/c++98-luainternals.o: src/luainternals.c src/luainternals.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/luainternals.c
|
||||
|
||||
$(OBJDIR)/c++98-lualess.o: src/lualess.c
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/lualess.c
|
||||
|
||||
$(OBJDIR)/c++98-save.o: src/save.c src/luaheaders.h src/luabins.h \
|
||||
src/saveload.h src/savebuffer.h src/write.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/save.c
|
||||
|
||||
$(OBJDIR)/c++98-savebuffer.o: src/savebuffer.c src/luaheaders.h \
|
||||
src/saveload.h src/savebuffer.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/savebuffer.c
|
||||
|
||||
$(OBJDIR)/c++98-write.o: src/write.c src/luaheaders.h src/write.h \
|
||||
src/saveload.h src/savebuffer.h
|
||||
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/write.c
|
||||
|
||||
## END OF GENERATED TARGETS ###################################################
|
||||
|
||||
.PHONY: all clean install cleanlibs cleanobjects test resettest cleantest testc89 lua-testsc89 c-testsc89 resettestc89 cleantestc89 cleantestobjectsc89 cleanlibsc89 cleanobjectsc89 testc99 lua-testsc99 c-testsc99 resettestc99 cleantestc99 cleantestobjectsc99 cleanlibsc99 cleanobjectsc99 testc++98 lua-testsc++98 c-testsc++98 resettestc++98 cleantestc++98 cleantestobjectsc++98 cleanlibsc++98 cleanobjectsc++98
|
112
vendor/luabins/README.md
vendored
Normal file
112
vendor/luabins/README.md
vendored
Normal file
|
@ -0,0 +1,112 @@
|
|||
luabins — Lua Binary Serialization Library
|
||||
==========================================
|
||||
|
||||
Allows to save tuples of primitive Lua types into binary chunks
|
||||
and to load saved data back.
|
||||
|
||||
On serialization
|
||||
----------------
|
||||
|
||||
### Luabins works with
|
||||
|
||||
* `nil`
|
||||
* `boolean`
|
||||
* `number`
|
||||
* `string`
|
||||
* `table` (see below)
|
||||
|
||||
### Luabins refuses to save
|
||||
|
||||
* `function`
|
||||
* `thread`
|
||||
* `userdata`
|
||||
|
||||
Luabins intentionally does not save or check any meta-information
|
||||
(versions, endianness etc.) along with data. If needed, it is to be handled
|
||||
elsewhere.
|
||||
|
||||
### Table serialization
|
||||
|
||||
1. Metatatables are ignored.
|
||||
2. Table nesting depth should be no more than `LUABINS_MAXTABLENESTING`.
|
||||
3. On table save references are not honored. Each encountered reference
|
||||
becomes independent object on load:
|
||||
|
||||
local t = { 42 }
|
||||
{ t, t }
|
||||
|
||||
becomes
|
||||
|
||||
{ { 42 }, { 42 } }
|
||||
|
||||
that is, three separate tables instead of two.
|
||||
|
||||
Lua API
|
||||
-------
|
||||
|
||||
* `luabins.save(...)`
|
||||
|
||||
Saves arguments into a binary string.
|
||||
|
||||
* On success returns that string.
|
||||
* On failure returns nil and error message.
|
||||
|
||||
Example:
|
||||
|
||||
local str = assert(luabins.save(1, "two", { "three", 4 }))
|
||||
|
||||
* `luabins.load(string)`
|
||||
|
||||
Loads a list of values from a binary string.
|
||||
|
||||
* On success returns true and loaded values.
|
||||
* On failure returns nil and error message.
|
||||
|
||||
Example:
|
||||
|
||||
If you do not know in advance what data is stored inside a binary string,
|
||||
you may put results into a table:
|
||||
|
||||
local values = { luabins.load(data) }
|
||||
assert(values[1], values[2])
|
||||
|
||||
If you know how to handle stored values (for example you're sure they were
|
||||
generated following some established protocol), you may want to use
|
||||
something like this function to check `luabins.load()` result:
|
||||
|
||||
function eat_true(t, ...)
|
||||
assert(t, ...)
|
||||
return ...
|
||||
end
|
||||
|
||||
my_value_handler(eat_true(luabins.load(data)))
|
||||
|
||||
C API
|
||||
-----
|
||||
|
||||
* `int luabins_save(lua_State * L, int index_from, int index_to)`
|
||||
|
||||
Save Lua values from given state at given stack index range.
|
||||
Lua value is left untouched. Note that empty range is not an error.
|
||||
You may save from 0 to `LUABINS_MAXTUPLE` values.
|
||||
Note only real non-negative indices work.
|
||||
|
||||
* On success returns 0, pushes saved data as a string on the top of stack.
|
||||
* On failure returns non-zero, pushes error message on the top
|
||||
of the stack.
|
||||
|
||||
* `int luabins_load(lua_State * L, const unsigned char * data,
|
||||
size_t len, int *count)`
|
||||
|
||||
Load Lua values from given byte chunk.
|
||||
|
||||
* On success returns 0, pushes loaded values on stack.
|
||||
Sets count to the number of values pushed.
|
||||
Note that to have zero loaded items is a valid scenario.
|
||||
* On failure returns non-zero, pushes error message on the top
|
||||
of the stack.
|
||||
|
||||
Luabins is still an experimental volatile software.
|
||||
Please see source code for more documentation.
|
||||
|
||||
See the copyright information in the file named `COPYRIGHT`.
|
11
vendor/luabins/TODO
vendored
Normal file
11
vendor/luabins/TODO
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
-- Add key-value size-less table format (see luatexts)
|
||||
-- Add utf-8 char-length string format (see luatexts)
|
||||
-- Add autotest targets for LuaJIT and LuaJIT 2 x86, x86_64, both for Lua and C.
|
||||
-- Test on Lua with custom allocator.
|
||||
-- Use Makefile in rockspec?
|
||||
-- Enhance "corrupt data" message on load. Need more info on what is wrong.
|
||||
Ensure every case is covered with tests.
|
||||
-- Autocompact integers (especially strings -- most of them do not need size_t!)
|
||||
-- Better cover new exponential growth strategy corner-cases with tests.
|
||||
-- Shouldn't write and fwrite have common codebase?
|
||||
-- Document write.h and fwrite.h
|
242
vendor/luabins/etc/Makefile.luabins.template
vendored
Normal file
242
vendor/luabins/etc/Makefile.luabins.template
vendored
Normal file
|
@ -0,0 +1,242 @@
|
|||
@{define:projectname:luabins}
|
||||
@{define:test-dir:test/}
|
||||
@{define:source-dir:src/}
|
||||
@{define:sharedlib:$(LIBDIR)/$(SONAME)}
|
||||
@{define:staticlib:$(LIBDIR)/$(ANAME)}
|
||||
@{define-table:release-info:
|
||||
{suffix="";
|
||||
libdir="$(LIBDIR)";objprefix="$(OBJDIR)/";
|
||||
cflags="";
|
||||
CC="$(CC)";
|
||||
LD="$(LD)";
|
||||
};
|
||||
}
|
||||
@{define-table:std-info:
|
||||
{suffix="c89";
|
||||
libdir="$(TMPDIR)/c89";objprefix="$(OBJDIR)/c89-";
|
||||
cflags="-Werror -Wall -Wextra -pedantic -x c -std=c89";
|
||||
CC="$(CC)";
|
||||
LD="$(LD)";
|
||||
};
|
||||
{suffix="c99";
|
||||
libdir="$(TMPDIR)/c99";objprefix="$(OBJDIR)/c99-";
|
||||
cflags="-Werror -Wall -Wextra -pedantic -x c -std=c99";
|
||||
CC="$(CC)";
|
||||
LD="$(LD)";
|
||||
};
|
||||
{suffix="c++98";
|
||||
libdir="$(TMPDIR)/c++98";objprefix="$(OBJDIR)/c++98-";
|
||||
cflags="-Werror -Wall -Wextra -pedantic -x c++ -std=c++98";
|
||||
CC="$(CXX)";
|
||||
LD="$(LDXX)";
|
||||
};
|
||||
}
|
||||
@{define-dep:dep-objects:dep-template::@{source-dir}}
|
||||
@{define-dep:test-dep-objects:test-dep-template:-I@{source-dir}:@{test-dir}}
|
||||
|
||||
## CONFIGURATION ##############################################################
|
||||
|
||||
ifeq ($(shell uname),Darwin)
|
||||
LUA_DIR := /usr/local
|
||||
LUA_LIBDIR := $(LUA_DIR)/lib/lua/5.1
|
||||
LUA_INCDIR := $(LUA_DIR)/include
|
||||
LUALIB := lua
|
||||
else
|
||||
# Assuming Ubuntu
|
||||
LUA_LIBDIR := /usr/lib
|
||||
LUA_INCDIR := /usr/include/lua5.1
|
||||
LUALIB := lua5.1
|
||||
endif
|
||||
|
||||
PROJECTNAME := @{projectname}
|
||||
|
||||
SONAME := $(PROJECTNAME).so
|
||||
ANAME := lib$(PROJECTNAME).a
|
||||
HNAME := $(PROJECTNAME).h
|
||||
TESTNAME := $(PROJECTNAME)-test
|
||||
TESTLUA := test.lua
|
||||
|
||||
LUA := lua
|
||||
CP := cp
|
||||
RM := rm -f
|
||||
RMDIR := rm -df
|
||||
MKDIR := mkdir -p
|
||||
CC := gcc
|
||||
LD := gcc
|
||||
AR := ar rcu
|
||||
RANLIB := ranlib
|
||||
ECHO := @echo
|
||||
TOUCH := touch
|
||||
|
||||
# Needed for tests only
|
||||
CXX := g++
|
||||
LDXX := g++
|
||||
|
||||
OBJDIR := ./obj
|
||||
TMPDIR := ./tmp
|
||||
INCDIR := ./include
|
||||
LIBDIR := ./lib
|
||||
|
||||
HFILE := $(INCDIR)/$(HNAME)
|
||||
|
||||
CFLAGS += -O2 -Wall -I$(LUA_INCDIR)
|
||||
LDFLAGS += -L$(LUA_LIBDIR)
|
||||
|
||||
# Tested on OS X and Ubuntu
|
||||
SOFLAGS :=
|
||||
ifeq ($(shell uname),Darwin)
|
||||
SOFLAGS += -dynamiclib -undefined dynamic_lookup
|
||||
else
|
||||
CFLAGS += -fPIC
|
||||
SOFLAGS += -shared
|
||||
LDFLAGS += -ldl
|
||||
RMDIR := rm -rf
|
||||
endif
|
||||
|
||||
CFLAGS += $(MYCFLAGS)
|
||||
LDFLAGS += $(MYLDFLAGS)
|
||||
|
||||
## MAIN TARGETS ###############################################################
|
||||
|
||||
@{define-table:.PHONY:}
|
||||
|
||||
@{insert:.PHONY:all}
|
||||
all: @{sharedlib} @{staticlib} $(HFILE)
|
||||
|
||||
@{insert:.PHONY:clean}
|
||||
clean: cleanlibs cleantest
|
||||
$(RM) $(HFILE)
|
||||
|
||||
@{insert:.PHONY:install}
|
||||
install: @{sharedlib}
|
||||
# Note header and static library are not copied anywhere
|
||||
$(CP) @{sharedlib} $(LUA_LIBDIR)/$(SONAME)
|
||||
|
||||
$(HFILE):
|
||||
$(CP) src/$(HNAME) $(HFILE)
|
||||
|
||||
@{--:-------------------------------------------------------------------------}
|
||||
|
||||
@{define:objects-macro:
|
||||
|
||||
@{insert:.PHONY:clean%<prefix>objects@{suffix}}
|
||||
clean%<prefix>objects@{suffix}:
|
||||
$(RM) %<objects>
|
||||
|
||||
%<dep>
|
||||
|
||||
}
|
||||
|
||||
@{define:lib-targets:
|
||||
|
||||
@{define-fill:objects:@{fill-template:@{dep-objects}:}}
|
||||
|
||||
@{insert:.PHONY:cleanlibs@{suffix}}
|
||||
cleanlibs@{suffix}: cleanobjects@{suffix}
|
||||
$(RM) @{sharedlib}
|
||||
$(RM) @{staticlib}
|
||||
|
||||
@{sharedlib}: @{objects}
|
||||
$(MKDIR) @{libdir}
|
||||
@{LD} -o $@ @{objects} $(LDFLAGS) $(SOFLAGS)
|
||||
|
||||
@{staticlib}: @{objects}
|
||||
$(MKDIR) @{libdir}
|
||||
$(AR) $@ @{objects}
|
||||
$(RANLIB) $@
|
||||
|
||||
@{--: note implicit objprefix parameter }
|
||||
# objects@{suffix}:
|
||||
@{fill-macro:objects-macro:%<>:
|
||||
prefix="",
|
||||
objects=@{lua-escape:@{objects}};
|
||||
dep=@{lua-escape:@{fill-template:dep-template:}};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@{define:std-targets:
|
||||
|
||||
## ----- Begin @{suffix} -----
|
||||
|
||||
@{define-fill:cflags-orig:@{cflags}}
|
||||
@{define-fill:cflags:@{cflags} -I@{source-dir}}
|
||||
|
||||
@{define-fill:sharedlib:@{libdir}/$(SONAME)}
|
||||
@{define-fill:staticlib:@{libdir}/$(ANAME)}
|
||||
@{define-fill:objects:@{fill-template:@{test-dep-objects}:}}
|
||||
|
||||
@{insert:.PHONY:test@{suffix}}
|
||||
test@{suffix}: lua-tests@{suffix} c-tests@{suffix}
|
||||
|
||||
@{insert:.PHONY:lua-tests@{suffix}}
|
||||
lua-tests@{suffix}: @{libdir}/.luatestspassed
|
||||
|
||||
@{insert:.PHONY:c-tests@{suffix}}
|
||||
c-tests@{suffix}: @{libdir}/.ctestspassed
|
||||
|
||||
@{libdir}/.luatestspassed: @{sharedlib} test/$(TESTLUA)
|
||||
$(ECHO) "===== Running Lua tests for @{suffix} ====="
|
||||
@$(LUA) \
|
||||
-e "package.cpath='@{sharedlib};'..package.cpath" \
|
||||
test/$(TESTLUA)
|
||||
$(TOUCH) @{libdir}/.luatestspassed
|
||||
$(ECHO) "===== Lua tests for @{suffix} PASSED ====="
|
||||
|
||||
@{libdir}/.ctestspassed: @{libdir}/$(TESTNAME) test/$(TESTLUA)
|
||||
$(ECHO) "===== Running C tests for @{suffix} ====="
|
||||
@{libdir}/$(TESTNAME)
|
||||
$(TOUCH) @{libdir}/.ctestspassed
|
||||
$(ECHO) "===== C tests for @{suffix} PASSED ====="
|
||||
|
||||
@{libdir}/$(TESTNAME): @{objects} @{staticlib}
|
||||
$(MKDIR) @{libdir}
|
||||
@{LD} -o $@ @{objects} $(LDFLAGS) -lm -l$(LUALIB) -l$(PROJECTNAME) -L@{libdir}
|
||||
|
||||
@{insert:.PHONY:resettest@{suffix}}
|
||||
resettest@{suffix}:
|
||||
$(RM) @{libdir}/.luatestspassed
|
||||
$(RM) @{libdir}/.ctestspassed
|
||||
|
||||
@{insert:.PHONY:cleantest@{suffix}}
|
||||
cleantest@{suffix}: cleanlibs@{suffix} resettest@{suffix} \
|
||||
cleantestobjects@{suffix}
|
||||
$(RM) @{libdir}/$(TESTNAME)
|
||||
$(RMDIR) @{libdir}
|
||||
|
||||
@{--: Note implicit objprefix parameter }
|
||||
# testobjects@{suffix}:
|
||||
@{fill-macro:objects-macro:%<>:
|
||||
prefix="test",
|
||||
objects=@{lua-escape:@{objects}};
|
||||
dep=@{lua-escape:@{fill-template:test-dep-template:}};
|
||||
}
|
||||
|
||||
@{--: Libraries must use original cflags }
|
||||
@{fill-template:lib-targets:cflags=@{lua-escape:@{cflags-orig}}}
|
||||
|
||||
}
|
||||
|
||||
## GENERATED RELEASE TARGETS ##################################################
|
||||
|
||||
@{map-template:release-info:lib-targets}
|
||||
|
||||
## TEST TARGETS ###############################################################
|
||||
|
||||
@{insert:.PHONY:test}
|
||||
test:@{map-template:std-info: test@{suffix}}
|
||||
$(ECHO) "===== TESTS PASSED ====="
|
||||
|
||||
@{insert:.PHONY:resettest}
|
||||
resettest:@{map-template:std-info: resettest@{suffix}}
|
||||
|
||||
@{insert:.PHONY:cleantest}
|
||||
cleantest:@{map-template:std-info: cleantest@{suffix}}
|
||||
|
||||
## GENERATED TEST TARGETS #####################################################
|
||||
|
||||
@{map-template:std-info:std-targets}
|
||||
|
||||
## END OF GENERATED TARGETS ###################################################
|
||||
|
||||
.PHONY: @{concat:.PHONY: }
|
106
vendor/luabins/etc/benchmark.lua
vendored
Normal file
106
vendor/luabins/etc/benchmark.lua
vendored
Normal file
|
@ -0,0 +1,106 @@
|
|||
-- This benchmark is compatible with luamarca benchmarking system
|
||||
-- http://github.com/agladysh/luamarca
|
||||
|
||||
package.cpath = "./?.so;"..package.cpath
|
||||
|
||||
local luabins = require("luabins")
|
||||
|
||||
local table_concat = table.concat
|
||||
local loadstring, assert = loadstring, assert
|
||||
local pairs, type, tostring = pairs, type, tostring
|
||||
local luabins_save, luabins_load = luabins.save, luabins.load
|
||||
|
||||
local lua = ([[return {
|
||||
true, false, 42, "string",
|
||||
[{
|
||||
true, false, 42, "string",
|
||||
[true] = true, [false] = false, [42] = 42, string = "string"
|
||||
}] =
|
||||
{
|
||||
true, false, 42, "string",
|
||||
[true] = true, [false] = false, [42] = 42, string = "string"
|
||||
}
|
||||
}]]):gsub("[%s\n]+", "") -- Remove spaces for compactness
|
||||
|
||||
local data = assert(loadstring(lua))()
|
||||
local saved = assert(luabins_save(data))
|
||||
|
||||
-- Imagine we know exact data structure.
|
||||
-- We still impose some overhead on table.concat() related
|
||||
-- stuff, since it is more realistic scenario.
|
||||
-- Still looks a bit silly.
|
||||
local concat = function(data)
|
||||
local buf = {}
|
||||
local function cat(v) buf[#buf + 1] = tostring(v) return cat end
|
||||
|
||||
-- Find table key
|
||||
local tablekey, tableval
|
||||
for k, v in pairs(data) do
|
||||
if type(k) == "table" then
|
||||
tablekey, tableval = k, v
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
cat 'return{'
|
||||
|
||||
cat (data[1]) ','
|
||||
cat (data[2]) ','
|
||||
cat (data[3]) ','
|
||||
cat '"' (data[4]) '",'
|
||||
|
||||
cat '[{'
|
||||
|
||||
cat (tablekey[1]) ','
|
||||
cat (tablekey[2]) ','
|
||||
cat (tablekey[3]) ','
|
||||
cat '"' (tablekey[4]) '",'
|
||||
|
||||
cat '[' (true) ']=' (tablekey[true]) ','
|
||||
cat '[' (false) ']=' (tablekey[false]) ','
|
||||
cat '[' (42) ']=' (tablekey[42]) ','
|
||||
cat 'string' '=' '"' (tablekey["string"]) '"'
|
||||
|
||||
cat '}]='
|
||||
|
||||
cat '{'
|
||||
|
||||
cat (tablekey[1]) ','
|
||||
cat (tablekey[2]) ','
|
||||
cat (tablekey[3]) ','
|
||||
cat '"' (tablekey[4]) '",'
|
||||
|
||||
cat '[' (true) ']=' (tablekey[true]) ','
|
||||
cat '[' (false) ']=' (tablekey[false]) ','
|
||||
cat '[' (42) ']=' (tablekey[42]) ','
|
||||
cat 'string' '=' '"' (tablekey["string"]) '"'
|
||||
|
||||
cat '}'
|
||||
|
||||
cat '}'
|
||||
|
||||
return table_concat(buf, '')
|
||||
end
|
||||
|
||||
-- Sanity check
|
||||
assert(concat(data) == lua)
|
||||
|
||||
local bench = {}
|
||||
|
||||
bench.concat = function()
|
||||
assert(concat(data))
|
||||
end
|
||||
|
||||
bench.loadstring = function()
|
||||
assert(loadstring(lua))()
|
||||
end
|
||||
|
||||
bench.luabins_save = function()
|
||||
assert(luabins_save(data))
|
||||
end
|
||||
|
||||
bench.luabins_load = function()
|
||||
assert(luabins_load(saved))
|
||||
end
|
||||
|
||||
return bench
|
30
vendor/luabins/etc/checkfmt.lua
vendored
Normal file
30
vendor/luabins/etc/checkfmt.lua
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
--- Luabins format checker
|
||||
|
||||
package.cpath = "./lib/?.so;"..package.cpath
|
||||
|
||||
local luabins = require("luabins")
|
||||
|
||||
local luabins_save, luabins_load = luabins.save, luabins.load
|
||||
|
||||
local filename = select(1, ...)
|
||||
assert(filename, "Usage: lua checkfmt.lua <out_filename>")
|
||||
|
||||
local file
|
||||
if filename == "-" then
|
||||
file = io.stdin
|
||||
else
|
||||
file = assert(io.open(filename, "r"))
|
||||
end
|
||||
|
||||
assert(
|
||||
luabins_load(
|
||||
file:read("*a")
|
||||
)
|
||||
)
|
||||
|
||||
if file ~= io.stdin then
|
||||
file:close()
|
||||
end
|
||||
file = nil
|
||||
|
||||
print("OK")
|
90
vendor/luabins/etc/dataset.lua
vendored
Normal file
90
vendor/luabins/etc/dataset.lua
vendored
Normal file
|
@ -0,0 +1,90 @@
|
|||
-- Random Luabins dataset generator
|
||||
|
||||
package.cpath = "./lib/?.so;"..package.cpath
|
||||
|
||||
local luabins = require("luabins")
|
||||
|
||||
local luabins_save, luabins_load = luabins.save, luabins.load
|
||||
|
||||
math.randomseed(123456)
|
||||
|
||||
-- TODO: Generalize. Copy-paste from test.lua
|
||||
local function gen_random_dataset(num, nesting)
|
||||
num = num or math.random(0, 128)
|
||||
nesting = nesting or 1
|
||||
|
||||
local gen_str = function()
|
||||
local t = {}
|
||||
local n = math.random(0, 1024)
|
||||
for i = 1, n do
|
||||
t[i] = string.char(math.random(0, 255))
|
||||
end
|
||||
return table.concat(t)
|
||||
end
|
||||
|
||||
local gen_bool = function() return math.random() >= 0.5 end
|
||||
|
||||
local gen_nil = function() return nil end
|
||||
|
||||
local generators =
|
||||
{
|
||||
gen_nil;
|
||||
gen_nil;
|
||||
gen_nil;
|
||||
gen_bool;
|
||||
gen_bool;
|
||||
gen_bool;
|
||||
function() return math.random() end;
|
||||
function() return math.random(-10000, 10000) end;
|
||||
function() return math.random() * math.random(-10000, 10000) end;
|
||||
gen_str;
|
||||
gen_str;
|
||||
gen_str;
|
||||
function()
|
||||
if nesting >= 24 then
|
||||
return nil
|
||||
end
|
||||
|
||||
local t = {}
|
||||
local n = math.random(0, 24 - nesting)
|
||||
for i = 1, n do
|
||||
local k = gen_random_dataset(1, nesting + 1)
|
||||
if k == nil then
|
||||
k = "(nil)"
|
||||
end
|
||||
t[ k ] = gen_random_dataset(
|
||||
1,
|
||||
nesting + 1
|
||||
)
|
||||
end
|
||||
|
||||
return t
|
||||
end;
|
||||
}
|
||||
|
||||
local t = {}
|
||||
for i = 1, num do
|
||||
local n = math.random(1, #generators)
|
||||
t[i] = generators[n]()
|
||||
end
|
||||
return unpack(t, 0, num)
|
||||
end
|
||||
|
||||
local saved = assert(luabins_save(gen_random_dataset()))
|
||||
|
||||
local filename = select(1, ...)
|
||||
assert(filename, "Usage: lua dataset.lua <out_filename>")
|
||||
|
||||
local file
|
||||
if filename == "-" then
|
||||
file = io.stdout
|
||||
else
|
||||
file = assert(io.open(filename, "w"))
|
||||
end
|
||||
|
||||
file:write(saved)
|
||||
|
||||
if file ~= io.stdout then
|
||||
file:close()
|
||||
end
|
||||
file = nil
|
2
vendor/luabins/etc/genmakefile.sh
vendored
Executable file
2
vendor/luabins/etc/genmakefile.sh
vendored
Executable file
|
@ -0,0 +1,2 @@
|
|||
#! /bin/bash
|
||||
lua ~/projects/genmakefile/src/genmakefile.lua <etc/Makefile.luabins.template >Makefile
|
39
vendor/luabins/etc/tolua.lua
vendored
Normal file
39
vendor/luabins/etc/tolua.lua
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
-- Luabins to Lua converter
|
||||
-- Requires lua-nucleo (http://github.com/lua-nucleo/lua-nucleo/)
|
||||
|
||||
package.cpath = "./lib/?.so;"..package.cpath
|
||||
|
||||
local luabins = require 'luabins'
|
||||
|
||||
dofile('lua-nucleo/strict.lua')
|
||||
dofile('lua-nucleo/import.lua')
|
||||
|
||||
local tserialize = import 'lua-nucleo/tserialize.lua' { 'tserialize' }
|
||||
|
||||
local filename = select(1, ...)
|
||||
assert(filename, "Usage: lua tolua.lua <out_filename>")
|
||||
|
||||
local file
|
||||
if filename == "-" then
|
||||
file = io.stdin
|
||||
else
|
||||
file = assert(io.open(filename, "r"))
|
||||
end
|
||||
|
||||
io.write(
|
||||
tserialize(
|
||||
assert(
|
||||
luabins.load(
|
||||
file:read("*a")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
io:flush()
|
||||
|
||||
if file ~= io.stdin then
|
||||
file:close()
|
||||
end
|
||||
file = nil
|
||||
|
16
vendor/luabins/etc/toluabins.lua
vendored
Normal file
16
vendor/luabins/etc/toluabins.lua
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
-- Lua to Luabins converter
|
||||
|
||||
package.cpath = "./lib/?.so;"..package.cpath
|
||||
|
||||
local luabins = require 'luabins'
|
||||
|
||||
local filename = select(1, ...)
|
||||
assert(filename, "Usage: lua toluabins.lua <out_filename>")
|
||||
|
||||
io.write(
|
||||
luabins.save(
|
||||
assert(loadfile(filename))()
|
||||
)
|
||||
)
|
||||
|
||||
io:flush()
|
0
vendor/luabins/include/.keepme
vendored
Normal file
0
vendor/luabins/include/.keepme
vendored
Normal file
0
vendor/luabins/lib/.keepme
vendored
Normal file
0
vendor/luabins/lib/.keepme
vendored
Normal file
0
vendor/luabins/obj/.keepme
vendored
Normal file
0
vendor/luabins/obj/.keepme
vendored
Normal file
19
vendor/luabins/rockspec/luabins-0.1.1-1.rockspec
vendored
Normal file
19
vendor/luabins/rockspec/luabins-0.1.1-1.rockspec
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
package = "luabins"
|
||||
version = "0.1.1-1"
|
||||
source = {
|
||||
url = "http://cloud.github.com/downloads/agladysh/luabins/luabins-0.1.1.tar.gz"
|
||||
}
|
||||
description = {
|
||||
summary = "Trivial Lua Binary Serialization Library",
|
||||
detailed = [[
|
||||
Luabins allows to save tuples of primitive Lua types into binary chunks and to load saved data back.
|
||||
]],
|
||||
homepage = "http://github.com/agladysh/luabins",
|
||||
license = "MIT/X11"
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1"
|
||||
}
|
||||
build = {
|
||||
type = "make"
|
||||
}
|
32
vendor/luabins/rockspec/luabins-0.1.1-2.rockspec
vendored
Normal file
32
vendor/luabins/rockspec/luabins-0.1.1-2.rockspec
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
package = "luabins"
|
||||
version = "0.1.1-2"
|
||||
source = {
|
||||
url = "http://cloud.github.com/downloads/agladysh/luabins/luabins-0.1.1.tar.gz"
|
||||
}
|
||||
description = {
|
||||
summary = "Trivial Lua Binary Serialization Library",
|
||||
detailed = [[
|
||||
Luabins allows to save tuples of primitive Lua types into binary chunks and to load saved data back.
|
||||
]],
|
||||
homepage = "http://github.com/agladysh/luabins",
|
||||
license = "MIT/X11"
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1"
|
||||
}
|
||||
build = {
|
||||
type = "builtin",
|
||||
modules = {
|
||||
luabins = {
|
||||
sources = {
|
||||
"src/load.c",
|
||||
"src/luabins.c",
|
||||
"src/luainternals.c",
|
||||
"src/save.c"
|
||||
},
|
||||
incdirs = {
|
||||
"src/"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
35
vendor/luabins/rockspec/luabins-0.2-1.rockspec
vendored
Normal file
35
vendor/luabins/rockspec/luabins-0.2-1.rockspec
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
package = "luabins"
|
||||
version = "0.2-1"
|
||||
source = {
|
||||
url = "http://cloud.github.com/downloads/agladysh/luabins/luabins-0.2.tar.gz"
|
||||
}
|
||||
description = {
|
||||
summary = "Trivial Lua Binary Serialization Library",
|
||||
detailed = [[
|
||||
Luabins allows to save tuples of primitive Lua types into binary chunks and to load saved data back.
|
||||
]],
|
||||
homepage = "http://github.com/agladysh/luabins",
|
||||
license = "MIT/X11"
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1"
|
||||
}
|
||||
build = {
|
||||
type = "builtin",
|
||||
modules = {
|
||||
luabins = {
|
||||
sources = {
|
||||
"src/load.c",
|
||||
"src/luabins.c",
|
||||
"src/luainternals.c",
|
||||
"src/lualess.c",
|
||||
"src/save.c",
|
||||
"src/savebuffer.c",
|
||||
"src/write.c"
|
||||
},
|
||||
incdirs = {
|
||||
"src/"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
35
vendor/luabins/rockspec/luabins-0.3-1.rockspec
vendored
Normal file
35
vendor/luabins/rockspec/luabins-0.3-1.rockspec
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
package = "luabins"
|
||||
version = "0.3-1"
|
||||
source = {
|
||||
url = "http://cloud.github.com/downloads/agladysh/luabins/luabins-0.3.tar.gz"
|
||||
}
|
||||
description = {
|
||||
summary = "Trivial Lua Binary Serialization Library",
|
||||
detailed = [[
|
||||
Luabins allows to save tuples of primitive Lua types into binary chunks and to load saved data back.
|
||||
]],
|
||||
homepage = "http://github.com/agladysh/luabins",
|
||||
license = "MIT/X11"
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1"
|
||||
}
|
||||
build = {
|
||||
type = "builtin",
|
||||
modules = {
|
||||
luabins = {
|
||||
sources = {
|
||||
"src/load.c",
|
||||
"src/luabins.c",
|
||||
"src/luainternals.c",
|
||||
"src/lualess.c",
|
||||
"src/save.c",
|
||||
"src/savebuffer.c",
|
||||
"src/write.c"
|
||||
},
|
||||
incdirs = {
|
||||
"src/"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
32
vendor/luabins/rockspec/luabins-scm-1.rockspec
vendored
Normal file
32
vendor/luabins/rockspec/luabins-scm-1.rockspec
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
package = "luabins"
|
||||
version = "scm-1"
|
||||
source = {
|
||||
url = "git://github.com/agladysh/luabins.git"
|
||||
}
|
||||
description = {
|
||||
summary = "Trivial Lua Binary Serialization Library",
|
||||
detailed = [[
|
||||
Luabins allows to save tuples of primitive Lua types into binary chunks and to load saved data back.
|
||||
]],
|
||||
homepage = "http://github.com/agladysh/luabins",
|
||||
license = "MIT/X11"
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1"
|
||||
}
|
||||
build = {
|
||||
type = "builtin",
|
||||
modules = {
|
||||
luabins = {
|
||||
sources = {
|
||||
"src/load.c",
|
||||
"src/luabins.c",
|
||||
"src/luainternals.c",
|
||||
"src/save.c"
|
||||
},
|
||||
incdirs = {
|
||||
"src/"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
35
vendor/luabins/rockspec/luabins-scm-2.rockspec
vendored
Normal file
35
vendor/luabins/rockspec/luabins-scm-2.rockspec
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
package = "luabins"
|
||||
version = "scm-2"
|
||||
source = {
|
||||
url = "git://github.com/agladysh/luabins.git"
|
||||
}
|
||||
description = {
|
||||
summary = "Trivial Lua Binary Serialization Library",
|
||||
detailed = [[
|
||||
Luabins allows to save tuples of primitive Lua types into binary chunks and to load saved data back.
|
||||
]],
|
||||
homepage = "http://github.com/agladysh/luabins",
|
||||
license = "MIT/X11"
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1"
|
||||
}
|
||||
build = {
|
||||
type = "builtin",
|
||||
modules = {
|
||||
luabins = {
|
||||
sources = {
|
||||
"src/load.c",
|
||||
"src/luabins.c",
|
||||
"src/luainternals.c",
|
||||
"src/lualess.c",
|
||||
"src/save.c",
|
||||
"src/savebuffer.c",
|
||||
"src/write.c"
|
||||
},
|
||||
incdirs = {
|
||||
"src/"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
49
vendor/luabins/src/fwrite.c
vendored
Normal file
49
vendor/luabins/src/fwrite.c
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* fwrite.c
|
||||
* Luabins Lua-less write API using FILE * as buffer
|
||||
* See copyright notice in luabins.h
|
||||
*/
|
||||
|
||||
#include "luaheaders.h"
|
||||
|
||||
#include "fwrite.h"
|
||||
|
||||
/* TODO: Note that stream errors are ignored. Handle them better? */
|
||||
|
||||
void lbs_fwriteTableHeader(
|
||||
FILE * f,
|
||||
int array_size,
|
||||
int hash_size
|
||||
)
|
||||
{
|
||||
fputc(LUABINS_CTABLE, f);
|
||||
fwrite(
|
||||
(const unsigned char *)&array_size,
|
||||
LUABINS_LINT,
|
||||
1,
|
||||
f
|
||||
);
|
||||
fwrite(
|
||||
(const unsigned char *)&hash_size,
|
||||
LUABINS_LINT,
|
||||
1,
|
||||
f
|
||||
);
|
||||
}
|
||||
|
||||
void lbs_fwriteNumber(FILE * f, lua_Number value)
|
||||
{
|
||||
fputc(LUABINS_CNUMBER, f);
|
||||
fwrite((const unsigned char *)&value, LUABINS_LNUMBER, 1, f);
|
||||
}
|
||||
|
||||
void lbs_fwriteString(
|
||||
FILE * f,
|
||||
const char * value,
|
||||
size_t length
|
||||
)
|
||||
{
|
||||
fputc(LUABINS_CSTRING, f);
|
||||
fwrite((const unsigned char *)&length, LUABINS_LSIZET, 1, f);
|
||||
fwrite((const unsigned char *)value, length, 1, f);
|
||||
}
|
37
vendor/luabins/src/fwrite.h
vendored
Normal file
37
vendor/luabins/src/fwrite.h
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* fwrite.h
|
||||
* Luabins Lua-less write API using FILE * as buffer
|
||||
* See copyright notice in luabins.h
|
||||
*/
|
||||
|
||||
#ifndef LUABINS_FWRITE_H_INCLUDED_
|
||||
#define LUABINS_FWRITE_H_INCLUDED_
|
||||
|
||||
#include "saveload.h"
|
||||
|
||||
#define lbs_fwriteTupleSize(f, tuple_size) \
|
||||
fputc((int)(tuple_size), (f))
|
||||
|
||||
void lbs_fwriteTableHeader(
|
||||
FILE * f,
|
||||
int array_size,
|
||||
int hash_size
|
||||
);
|
||||
|
||||
#define lbs_fwriteNil(f) \
|
||||
fputc(LUABINS_CNIL, (f))
|
||||
|
||||
#define lbs_fwriteBoolean(f, value) \
|
||||
fputc(((value) == 0) ? LUABINS_CFALSE : LUABINS_CTRUE, (f))
|
||||
|
||||
void lbs_fwriteNumber(FILE * f, lua_Number value);
|
||||
|
||||
#define lbs_fwriteInteger lbs_fwriteNumber
|
||||
|
||||
void lbs_fwriteString(
|
||||
FILE * f,
|
||||
const char * value,
|
||||
size_t length
|
||||
);
|
||||
|
||||
#endif /* LUABINS_FWRITE_H_INCLUDED_ */
|
367
vendor/luabins/src/load.c
vendored
Normal file
367
vendor/luabins/src/load.c
vendored
Normal file
|
|