17913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifndef _OS_H
27913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#define _OS_H
337fe158a8611dd11ec0253ab1552399b780988dcGloria Wang/************************************************************************
42da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * Copyright (C) 2002-2009, Xiph.org Foundation
52da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * Copyright (C) 2010, Robin Watts for Pinknoise Productions Ltd
637fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * All rights reserved.
737fe158a8611dd11ec0253ab1552399b780988dcGloria Wang *
837fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * Redistribution and use in source and binary forms, with or without
92da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * modification, are permitted provided that the following conditions
102da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * are met:
1137fe158a8611dd11ec0253ab1552399b780988dcGloria Wang *
1237fe158a8611dd11ec0253ab1552399b780988dcGloria Wang *     * Redistributions of source code must retain the above copyright
1337fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * notice, this list of conditions and the following disclaimer.
1437fe158a8611dd11ec0253ab1552399b780988dcGloria Wang *     * Redistributions in binary form must reproduce the above
1537fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * copyright notice, this list of conditions and the following disclaimer
1637fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * in the documentation and/or other materials provided with the
1737fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * distribution.
182da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang *     * Neither the names of the Xiph.org Foundation nor Pinknoise
192da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * Productions Ltd nor the names of its contributors may be used to
202da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * endorse or promote products derived from this software without
212da723a953a18e3c7fec194cec1216cf31130c86Gloria Wang * specific prior written permission.
2237fe158a8611dd11ec0253ab1552399b780988dcGloria Wang *
2337fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2437fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2537fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2637fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2737fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2837fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2937fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3037fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3137fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3237fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3337fe158a8611dd11ec0253ab1552399b780988dcGloria Wang * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3437fe158a8611dd11ec0253ab1552399b780988dcGloria Wang ************************************************************************
357913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
367913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang function: #ifdef jail to whip a few platforms into the UNIX ideal.
377913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
3837fe158a8611dd11ec0253ab1552399b780988dcGloria Wang ************************************************************************/
397913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
407913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#include <math.h>
417913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#include "os_types.h"
427913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
437913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifndef _V_IFDEFJAIL_H_
447913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  define _V_IFDEFJAIL_H_
457913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
467913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  ifdef __GNUC__
477913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#    define STIN static __inline__
487913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  elif _WIN32
497913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#    define STIN static __inline
507913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  endif
517913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#else
527913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  define STIN static
537913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif
547913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
557913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifndef M_PI
567913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  define M_PI (3.1415926536f)
577913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif
587913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
597913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifdef _WIN32
607913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  include <malloc.h>
617913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  define rint(x)   (floor((x)+0.5f))
627913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  define NO_FLOAT_MATH_LIB
637913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b))
647913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif
657913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
667913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifdef HAVE_ALLOCA_H
677913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  include <alloca.h>
687913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif
697913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
707913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifdef USE_MEMORY_H
717913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  include <memory.h>
727913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif
737913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
747913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifndef min
757913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  define min(x,y)  ((x)>(y)?(y):(x))
767913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif
777913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
787913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#ifndef max
797913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#  define max(x,y)  ((x)<(y)?(y):(x))
807913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif
817913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang
827913073ddf11ca3dd7b0439998e1b17d443bb0baGloria Wang#endif /* _OS_H */
83