mirror of
https://bitbucket.org/Mattrixwv/luaclasses.git
synced 2025-12-06 18:33:59 -05:00
Added some safety precautions and added documentation
This commit is contained in:
@@ -1,51 +1,99 @@
|
|||||||
--luaClasses/Stopwatch.lua
|
--luaClasses/Stopwatch.lua
|
||||||
--Matthew Ellison
|
--Matthew Ellison
|
||||||
-- Created: 02-01-19
|
-- Created: 02-01-19
|
||||||
--Modified: 02-06-19
|
--Modified: 02-08-19
|
||||||
--This is a simple class to be used to time runtimes of various things within programs
|
--This is a simple class to be used to time runtimes of various things within programs
|
||||||
|
|
||||||
Stopwatch = {
|
|
||||||
startTime = 0,
|
|
||||||
stopTime = 0
|
|
||||||
}
|
|
||||||
Stopwatch.__index = Stopwatch
|
|
||||||
|
|
||||||
|
--You need some kind of table to hold the times
|
||||||
|
Stopwatch = {}
|
||||||
|
Stopwatch.__index = Stopwatch;
|
||||||
|
|
||||||
|
--This is needed to create a Stopwatch and link the variables and functions
|
||||||
|
--It should be called before anything else when createing a Stopwatch
|
||||||
function Stopwatch:create()
|
function Stopwatch:create()
|
||||||
local timer = {}
|
local timer = {
|
||||||
setmetatable(timer, Stopwatch)
|
startTime = nil,
|
||||||
return timer
|
stopTime = nil
|
||||||
|
};
|
||||||
|
setmetatable(timer, Stopwatch); --This links the new variable with the functions from the Stopwatch
|
||||||
|
return timer;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--This function gets the start time to simulate actually hitting the button on a stopwatch
|
||||||
function Stopwatch:start()
|
function Stopwatch:start()
|
||||||
self.startTime = os.clock()
|
self.stopTime = nil; --Make sure it knows that the clock is still running
|
||||||
self.stopTime = 0
|
--Setting the clock last puts the time closer to the actual start of the thing you are trying to time
|
||||||
|
self.startTime = os.clock(); --Get the current time
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--This function gets the stop time to simulate actually hitting the stop button on a stopwatch
|
||||||
function Stopwatch:stop()
|
function Stopwatch:stop()
|
||||||
self.stopTime = os.clock()
|
--Set the time first, for efficiency sake
|
||||||
|
self.stopTime = os.clock();
|
||||||
|
--Make sure the clock had been started
|
||||||
|
if(startTime == nil) then
|
||||||
|
--If not unset the stop time
|
||||||
|
stopTime = nil;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--This function resets all the variables. It is used if you want to use the same timer for multiple tests, but it shouldn't be necessary. Use to avoid unforseen bugs
|
||||||
function Stopwatch:reset()
|
function Stopwatch:reset()
|
||||||
self.startTime = 0
|
self.startTime = nil;
|
||||||
self.stopTime = 0
|
self.stopTime = nil;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--Returns the difference in the time at the default time resolution
|
||||||
|
--Mostly called from the other get___ functions
|
||||||
function Stopwatch:getTime()
|
function Stopwatch:getTime()
|
||||||
return (self.stopTime - self.startTime)
|
local timeDifference = nil;
|
||||||
|
--If start and stop has been called return the difference
|
||||||
|
if(startTime and stopTime) then
|
||||||
|
timeDifference = endTime - startTime;
|
||||||
|
--If start has been called but stop hasn't make the current time the end time. This simulates looking at a stopwatch while it is still running
|
||||||
|
elseif(startTime and not stopTime) then
|
||||||
|
timeDifference = os.time() - startTime;
|
||||||
|
--Otherwise return -1 as an error
|
||||||
|
else
|
||||||
|
timeDifference = -1;
|
||||||
|
end
|
||||||
|
--Return the number generated
|
||||||
|
return timeDifference;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--This function returns the duration the stopwatch has run in microseconds
|
||||||
function Stopwatch:getMicroseconds()
|
function Stopwatch:getMicroseconds()
|
||||||
return math.floor(self:getTime() * 1000000)
|
local timeDifference = self:getTime(); --Get the time that has elapsed
|
||||||
|
--If you did not get an error convert the time to microseconds
|
||||||
|
if(timeDifference >= 0) then
|
||||||
|
timeDifference = timeDifference * 1000000;
|
||||||
|
end
|
||||||
|
return timeDifference;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--This function returns the duration the stopwatch has run in milliseconds
|
||||||
function Stopwatch:getMilliseconds()
|
function Stopwatch:getMilliseconds()
|
||||||
return (self:getTime() * 1000)
|
local timeDifference = self:getTime(); --Get the time that has elapsed
|
||||||
|
--If you did not get an error convert the time to milliseconds
|
||||||
|
if(timeDifference >= 0) then
|
||||||
|
timeDifference = timeDifference * 1000;
|
||||||
|
end
|
||||||
|
return timeDifference;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--This function returns the duration the stopwatch has run in seconds
|
||||||
function Stopwatch:getSeconds()
|
function Stopwatch:getSeconds()
|
||||||
return self:getTime()
|
--The function returns in seconds by default
|
||||||
|
return self:getTime();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--This function returns the duration the stopwatch has run in minutes
|
||||||
function Stopwatch:getMinutes()
|
function Stopwatch:getMinutes()
|
||||||
return (self:getTime() / 60)
|
local timeDifference = self:getTime();
|
||||||
|
--If you did not get an error conver the time to minutes
|
||||||
|
if(timeDifference >= 0) then
|
||||||
|
timeDifference = timeDifference / 60;
|
||||||
|
end
|
||||||
|
return timeDifference;
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user