source: abuse/trunk/src/common.h @ 574

Last change on this file since 574 was 574, checked in by Sam Hocevar, 12 years ago

lol: add the cross-platform Timer class from Lol Engine.

  • Property svn:keywords set to Id
File size: 2.2 KB
RevLine 
[509]1/*
2 *  Abuse - dark 2D side-scrolling platform game
3 *  Copyright (c) 1995 Crack dot Com
4 *  Copyright (c) 2005-2011 Sam Hocevar <sam@hocevar.net>
5 *
6 *  This software was released into the Public Domain. As with most public
[555]7 *  domain software, no warranty is made or implied by Crack dot Com, by
8 *  Jonathan Clark, or by Sam Hocevar.
[509]9 */
10
11#ifndef __COMMON_H__
12#define __COMMON_H__
13
[518]14//
[524]15// Globally required headers
16//
17#include <stdint.h>
[525]18#include <stdio.h>
[524]19
20//
[518]21// Lol Engine
22//
[509]23#include "lol/matrix.h"
[574]24#include "lol/timer.h"
[509]25using namespace lol;
26
[518]27//
28// Custom utility functions
29//
30static inline int Min(int a, int b) { return a < b ? a : b; }
31static inline int Max(int a, int b) { return a > b ? a : b; }
[574]32static inline unsigned int Min(unsigned int a, unsigned int b) { return a < b ? a : b; }
33static inline unsigned int Max(unsigned int a, unsigned int b) { return a > b ? a : b; }
[565]34static inline long Min(long a, long b) { return a < b ? a : b; }
35static inline long Max(long a, long b) { return a > b ? a : b; }
36static inline unsigned long Min(unsigned long a, unsigned long b) { return a < b ? a : b; }
37static inline unsigned long Max(unsigned long a, unsigned long b) { return a > b ? a : b; }
[518]38static inline float Min(float a, float b) { return a < b ? a : b; }
39static inline float Max(float a, float b) { return a > b ? a : b; }
40
[524]41//
42// Byte swapping
43//
44static inline int BigEndian()
45{
46    union { uint32_t const x; uint8_t t[4]; } const u = { 0x01ffff00 };
47    return u.t[0];
48}
49
[525]50static inline uint16_t lstl(uint16_t x)
[524]51{
[525]52    if (BigEndian())
53        return ((uint16_t)x << 8 ) | ((uint16_t)x >> 8);
54    return x;
[524]55}
56
[525]57static inline uint32_t lltl(uint32_t x)
[524]58{
[525]59    if (BigEndian())
60        return ((uint32_t)x >> 24) | (((uint32_t)x & 0x00ff0000) >> 8)
61             | (((uint32_t)x & 0x0000ff00) << 8) | ((uint32_t)x << 24);
62    return x;
[524]63}
64
65#define ERROR(x,st) { if (!(x)) \
66   { printf("Error on line %d of %s : %s\n", \
67     __LINE__,__FILE__,st); exit(1); } }
68
69// These macros should be removed for the non-debugging version
70#ifdef NO_CHECK
71#   define CONDITION(x,st)
72#   define CHECK(x)
73#else
74#   define CONDITION(x,st) ERROR(x,st)
75#   define CHECK(x) CONDITION(x,"Check stop");
76#endif
77
[509]78#endif // __COMMON_H__
79
Note: See TracBrowser for help on using the repository browser.