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