diff options
author | Alexander Harkness <bearbin@gmail.com> | 2013-11-24 15:29:35 +0100 |
---|---|---|
committer | Alexander Harkness <bearbin@gmail.com> | 2013-11-24 15:29:35 +0100 |
commit | 998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a (patch) | |
tree | 51c901fdd30ce632107cd69b3df3b107f4cbb6a5 /lib/tolua++/src/bin/lua/doit.lua | |
parent | Moved zlib (diff) | |
download | cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.gz cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.bz2 cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.lz cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.xz cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.tar.zst cuberite-998fb17fdc150bc9c6b3d8da0dd37dfd1ae7b39a.zip |
Diffstat (limited to 'lib/tolua++/src/bin/lua/doit.lua')
-rw-r--r-- | lib/tolua++/src/bin/lua/doit.lua | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/lib/tolua++/src/bin/lua/doit.lua b/lib/tolua++/src/bin/lua/doit.lua new file mode 100644 index 000000000..51dd0cf3c --- /dev/null +++ b/lib/tolua++/src/bin/lua/doit.lua @@ -0,0 +1,102 @@ +-- Generate binding code +-- Written by Waldemar Celes +-- TeCGraf/PUC-Rio +-- Jul 1998 +-- Last update: Apr 2003 +-- $Id: $ + + +-- This code is free software; you can redistribute it and/or modify it. +-- The software provided hereunder is on an "as is" basis, and +-- the author has no obligation to provide maintenance, support, updates, +-- enhancements, or modifications. + +function parse_extra() + + for k,v in ipairs(_extra_parameters or {}) do + + local b,e,name,value = string.find(v, "^([^=]*)=(.*)$") + if b then + _extra_parameters[name] = value + else + _extra_parameters[v] = true + end + end +end + +function doit () + -- define package name, if not provided + if not flags.n then + if flags.f then + flags.n = gsub(flags.f,"%..*$","") + _,_,flags.n = string.find(flags.n, "([^/\\]*)$") + else + error("#no package name nor input file provided") + end + end + + -- parse table with extra paramters + parse_extra() + + -- do this after setting the package name + if flags['L'] then + dofile(flags['L']) + end + + -- add cppstring + if not flags['S'] then + _basic['string'] = 'cppstring' + _basic['std::string'] = 'cppstring' + _basic['AString'] = 'cppstring' + _basic_ctype.cppstring = 'const char*' + end + + -- proccess package + local p = Package(flags.n,flags.f) + + if flags.p then + return -- only parse + end + + if flags.o then + local st,msg = writeto(flags.o) + if not st then + error('#'..msg) + end + end + + p:decltype() + if flags.P then + p:print() + else + push(p) + pre_output_hook(p) + pop() + p:preamble() + p:supcode() + push(p) + pre_register_hook(p) + pop() + p:register() + push(p) + post_output_hook(p) + pop() + end + + if flags.o then + writeto() + end + + -- write header file + if not flags.P then + if flags.H then + local st,msg = writeto(flags.H) + if not st then + error('#'..msg) + end + p:header() + writeto() + end + end +end + |