view libmlk-core/mlk/core/util.c @ 634:3930234ab1f5

examples: add basic gamepad
author David Demelier <markand@malikania.fr>
date Tue, 29 Aug 2023 13:34:10 +0200
parents 3d238b43a9aa
children
line wrap: on
line source

/*
 * util.c -- libmlk-core utilities
 *
 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
 *
 * 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 <assert.h>
#include <limits.h>
#include <stdlib.h>

#include <SDL.h>

#include <mlk/util/util.h>

#include "util.h"

void
mlk_util_sleep(unsigned int ms)
{
	SDL_Delay(ms);
}

const char *
mlk_util_pathf(const char *fmt, ...)
{
	static char path[MLK_PATH_MAX];
	va_list ap;

	va_start(ap, fmt);
	vsnprintf(path, sizeof (path), fmt, ap);
	va_end(ap);

	return path;
}

unsigned int
mlk_util_nrand(unsigned int lower, unsigned int upper)
{
	assert(upper <= RAND_MAX);

	return (rand() % (upper - lower)) + lower;
}

intmax_t
mlk_clampi(intmax_t v, intmax_t min, intmax_t max)
{
	return v < min ? min : v > max ? max : v;
}

uintmax_t
mlk_clampu(uintmax_t v, uintmax_t min, uintmax_t max)
{
	return v < min ? min : v > max ? max : v;
}