# HG changeset patch # User David Demelier # Date 1578342465 -3600 # Node ID 3054723e53d71bb282f85f3e49dbc0d12b2c6085 # Parent b5c649b6367b8a2ba6e183ed7ecd6af64aa2cd1c core: implement clock, closes #2443 diff -r b5c649b6367b -r 3054723e53d7 Makefile --- a/Makefile Mon Jan 06 21:14:35 2020 +0100 +++ b/Makefile Mon Jan 06 21:27:45 2020 +0100 @@ -21,7 +21,8 @@ CC= clang CFLAGS= -O3 -DNDEBUG -std=c99 -Wall -Wextra CPPFLAGS= -MMD -SRCS= src/image.c \ +SRCS= src/clock.c \ + src/image.c \ src/main.c \ src/sprite.c \ src/texture.c \ diff -r b5c649b6367b -r 3054723e53d7 src/clock.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/clock.c Mon Jan 06 21:27:45 2020 +0100 @@ -0,0 +1,33 @@ +/* + * clock.c -- track elapsed time + * + * Copyright (c) 2020 David Demelier + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include + +#include "clock.h" + +void +clock_start(struct clock *clock) +{ + clock->ticks = SDL_GetTicks(); +} + +uint64_t +clock_elapsed(const struct clock *clock) +{ + return SDL_GetTicks() - clock->ticks; +} diff -r b5c649b6367b -r 3054723e53d7 src/clock.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/clock.h Mon Jan 06 21:27:45 2020 +0100 @@ -0,0 +1,55 @@ +/* + * clock.h -- track elapsed time + * + * Copyright (c) 2020 David Demelier + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef MOLKO_CLOCK_H +#define MOLKO_CLOCK_H + +/** + * \file clock.h + * \brief Track elapsed time. + */ + +#include + +/** + * \brief Clock structure. + */ +struct clock { + uint64_t ticks; /* time point on initialization */ +}; + +/** + * Start the clock and track elapsed time. + * + * \pre clock != NULL + * \param clock the clock + */ +void +clock_start(struct clock *clock); + +/** + * Tell the measured time. + * + * \pre clock != NULL + * \param clock the clock + * \return the elapsed time in milliseconds + */ +uint64_t +clock_elapsed(const struct clock *clock); + +#endif /* !MOLKO_CLOCK_H */