FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

GitHub Viewer

--- Program-related functions. -- Standard library imports -- local clock = os.clock local error = error local getenv = os.getenv local max = math.max local pcall = pcall local print = print local select = select local tonumber = tonumber -- Modules -- local array = require("impl.array") -- Imports -- local GetLib = array.GetLib -- Exports -- local M = {} -- -- local IterPrev = 0 local TimePrev = 0 local MaxRate = 0 -- -- local T0 -- function M.Add (into) for k, v in pairs{ -- assets = function() return getenv("AF_PATH") .. "/assets" end, --[[ union Data { unsigned dim; char bytes[4]; }; unsigned char reverse_char(unsigned char b) { b = (b & 0xF0) >> 4 | (b & 0x0F) > 2 | (b & 0x33) > 1 | (b & 0x55) > 1) & 0x55555555u) | ((x & 0x55555555u) > 2) & 0x33333333u) | ((x & 0x33333333u) > 4) & 0x0f0f0f0fu) | ((x & 0x0f0f0f0fu) > 8) & 0x00ff00ffu) | ((x & 0x00ff00ffu) > 16) & 0xffffu) | ((x & 0xffffu) 1 and tonumber(argv[1]) or 0 local Lib = GetLib() -- Select a device and display arrayfire info Lib.setDevice(device) Lib.info() func(argc, argv) if getenv("windir") ~= nil then -- pause in Windows if not (arc == 2 and argv[1]:sub(1, 1) == "-") then print("hit [enter]...") io.output():flush() -- getchar() io.input():read()? end end end) if not ok then print(err) -- TODO: more informative error("aborting") end end, -- ^^^ TODO: setfenv() / _ENV variant? -- Also, rearrange for exit stuff? -- Are the windows redirecting IO? -- progress = function(iter_curr, t, time_total) local Lib = GetLib() Lib.sync() local time_curr = Lib.timer_stop(t) if time_curr - TimePrev < 1 then return true end local rate = (iter_curr - IterPrev) / (time_curr - TimePrev) Lib.printf(" iterations per second: %.0f (progress %.0f%%)", rate, 100.0 * time_curr / time_total) MaxRate = max(MaxRate, rate) IterPrev = iter_curr TimePrev = time_curr if time_curr < time_total then return true end Lib.printf(" ### %f iterations per second (max)", MaxRate) return false end, -- timeit = function(func) local t0 = clock() func() return clock() - t0 end, -- timer_start = function() T0 = clock() end, -- timer_stop = function(since) return clock() - (since or T0) end, -- wait_for_windows = function(how, w1, w2, w3) -- return function() local is_open if w3 and w3:close() then is_open = false elseif w2 and w2:close() then is_open = false else is_open = not w1:close() end if how == "until" then return not is_open else return is_open end end end, -- wait_for_windows_close = function(how, w1, w2, w3) local going = GetLib().wait_for_windows(how, w1, w2, w3) return function() local is_going = going() local is_open = is_going if how == "until" then is_open = not is_open end if not is_open then if not w1:close() then w1:destroy() -- TODO: Do this right... how? end if w2 and not w2:close() then w2:destroy() end if w3 and not w3:close() then w3:destroy() end end return is_going end -- end -- ^^^ TODO: Better stuff? (resolution, instantiable?) } do into[k] = v end end -- Export the module. return M

Back | FazBrowse Home | New Git URL