ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/util.h
(Generate patch)

Comparing deliantra/server/include/util.h (file contents):
Revision 1.59 by root, Sun Dec 16 02:50:33 2007 UTC vs.
Revision 1.63 by root, Sat Mar 15 13:52:38 2008 UTC

21 21
22#ifndef UTIL_H__ 22#ifndef UTIL_H__
23#define UTIL_H__ 23#define UTIL_H__
24 24
25//#define PREFER_MALLOC 25//#define PREFER_MALLOC
26#define DEBUG_SALLOC
26 27
27#if __GNUC__ >= 3 28#if __GNUC__ >= 3
28# define is_constant(c) __builtin_constant_p (c) 29# define is_constant(c) __builtin_constant_p (c)
29# define expect(expr,value) __builtin_expect ((expr),(value)) 30# define expect(expr,value) __builtin_expect ((expr),(value))
30# define prefetch(addr,rw,locality) __builtin_prefetch (addr, rw, locality) 31# define prefetch(addr,rw,locality) __builtin_prefetch (addr, rw, locality)
52#include <glib.h> 53#include <glib.h>
53 54
54#include <shstr.h> 55#include <shstr.h>
55#include <traits.h> 56#include <traits.h>
56 57
58#ifdef DEBUG_SALLOC
59# define g_slice_alloc0(s) debug_slice_alloc0(s)
60# define g_slice_alloc(s) debug_slice_alloc(s)
61# define g_slice_free1(s,p) debug_slice_free1(s,p)
62void *g_slice_alloc (unsigned long size);
63void *g_slice_alloc0 (unsigned long size);
64void g_slice_free1 (unsigned long size, void *ptr);
65#endif
66
57// use C0X decltype for auto declarations until ISO C++ sanctifies them (if ever) 67// use C0X decltype for auto declarations until ISO C++ sanctifies them (if ever)
58#define auto(var,expr) decltype(expr) var = (expr) 68#define auto(var,expr) decltype(expr) var = (expr)
59 69
60// very ugly macro that basicaly declares and initialises a variable 70// very ugly macro that basicaly declares and initialises a variable
61// that is in scope for the next statement only 71// that is in scope for the next statement only
79template<typename T, typename U> static inline T min (T a, U b) { return (U)a < b ? (U)a : b; } 89template<typename T, typename U> static inline T min (T a, U b) { return (U)a < b ? (U)a : b; }
80template<typename T, typename U> static inline T max (T a, U b) { return (U)a > b ? (U)a : b; } 90template<typename T, typename U> static inline T max (T a, U b) { return (U)a > b ? (U)a : b; }
81template<typename T, typename U, typename V> static inline T clamp (T v, U a, V b) { return v < (T)a ? (T)a : v >(T)b ? (T)b : v; } 91template<typename T, typename U, typename V> static inline T clamp (T v, U a, V b) { return v < (T)a ? (T)a : v >(T)b ? (T)b : v; }
82 92
83template<typename T, typename U> static inline void swap (T& a, U& b) { T t=a; a=(T)b; b=(U)t; } 93template<typename T, typename U> static inline void swap (T& a, U& b) { T t=a; a=(T)b; b=(U)t; }
94
95template<typename T, typename U, typename V> static inline T min (T a, U b, V c) { return min (a, min (b, c)); }
96template<typename T, typename U, typename V> static inline T max (T a, U b, V c) { return max (a, max (b, c)); }
84 97
85template<typename T> 98template<typename T>
86static inline T 99static inline T
87lerp (T val, T min_in, T max_in, T min_out, T max_out) 100lerp (T val, T min_in, T max_in, T min_out, T max_out)
88{ 101{

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines