diff options
author | Robert G. Jakabosky <bobby@sharedrealm.com> | 2011-01-08 04:04:41 -0800 |
---|---|---|
committer | Robert G. Jakabosky <bobby@sharedrealm.com> | 2011-01-08 04:04:41 -0800 |
commit | 17543cb3a3b8a5ee095de5832acdf18dc200fdb9 (patch) | |
tree | 478d8378393aca7998b03997df9b765c8c317845 | |
parent | 3970f56e7f4f2dc5d0fed7b28e650c4888010f0f (diff) | |
download | luagit2-17543cb3a3b8a5ee095de5832acdf18dc200fdb9.tar.gz |
Added missing 'utils' module. Removed un-used template file.
-rw-r--r-- | template.nobj.lua | 45 | ||||
-rw-r--r-- | utils.lua | 118 |
2 files changed, 118 insertions, 45 deletions
diff --git a/template.nobj.lua b/template.nobj.lua deleted file mode 100644 index 830916f..0000000 --- a/template.nobj.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Copyright (c) 2010 by Robert G. Jakabosky <bobby@sharedrealm.com> --- --- 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. - ---[[ -vi commands: -:%s/<newname>/<newname>/g -:%s/<NewName>/<NewName>/g -]] - -c_source [[ -typedef git_<newname> <NewName>; -]] - -object "<NewName>" { - constructor { - c_call "<NewName> *" "git_<newname>_new" {} - }, - destructor { - c_call "void" "git_<newname>_free" {} - }, - method "set_name" { - c_call "void" "git_<newname>_set_name" {"const char *", "name"} - }, - method "get_name" { - c_call "const char *" "git_<newname>_get_name" {} - }, -} - diff --git a/utils.lua b/utils.lua new file mode 100644 index 0000000..2a16c2c --- /dev/null +++ b/utils.lua @@ -0,0 +1,118 @@ +-- Copyright (c) 2010 by Robert G. Jakabosky <bobby@sharedrealm.com> +-- +-- 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. + +function dump_meta_recur(seen, obj, depth, dbg) + local meta = getmetatable(obj) + if meta == nil then return '' end + local out = ', mt: ' .. tostring(meta) .. ' ' + -- check if this metatable has been seen already. + if seen[meta] then + return out .. tostring(meta) + end + return out .. dump_recur(seen, meta, depth, dbg) +end + +function dump_recur(seen, obj, depth, dbg) + local t = type(obj) + -- if not a table just convert to string. + if t ~= "table" then + local out + if t == "string" then + out = '"' .. obj .. '"' + else + out = tostring(obj) + if dbg == 1 then + out = out .. dump_meta_recur(seen, obj, depth, dbg) + end + end + return out + end + -- check if table has a __tostring metamethod. + if dbg ~= 1 then + local m = getmetatable(obj) + if m then + local tostr = m.__tostring + if tostr then + out = '"' .. tostr(obj) .. '"' + return out + end + end + end + -- check if this table has been seen already. + if seen[obj] then + return "Already dumped " .. tostring(obj) + end + seen[obj] = true + -- restrict max depth. + if depth >= 10 then + return "{... max depth reached ...}" + end + depth = depth + 1 + -- output table key/value pairs + local tabs = string.rep(" ",depth) + local out + if dbg == 1 then + out = tostring(obj) .. " {\n" + else + out = "{\n" + end + for k,v in pairs(obj) do + if type(k) ~= "number" then + out = out .. tabs .. '[' .. dump_recur(seen, k, depth, dbg) .. '] = ' .. + dump_recur(seen, v, depth, dbg) .. ',\n' + else + out = out .. tabs .. '[' .. k .. '] = ' .. dump_recur(seen, v, depth, dbg) .. ',\n' + end + end + out = out .. tabs:sub(1,-3) .. "}" + if dbg == 1 then + out = out .. dump_meta_recur(seen, obj, depth, dbg) + end + return out +end + +function dbg_dump(obj) + local seen = {} + return dump_recur(seen, obj, 0, 1) +end + +function dump(obj) + local seen = {} + return dump_recur(seen, obj, 0, 0) +end + +local function sizeof2(size, ...) + collectgarbage"collect" + size= collectgarbage"count"*1024 - size + print("used size: " .. size) + return size, ... +end + +function sizeof(test, ...) + local size=0 + local ret + if type(test) == "string" then + test=assert(loadstring(test)) + end + collectgarbage"collect" + size=collectgarbage"count"*1024 + return sizeof2(size, maker(...)) +end + |