[Bf-blender-cvs] SVN commit: /data/svn/repos/bf-blender [61489] trunk/lib/win64_vc12/ OpenImageIO/include/OpenImageIO/platform.h: Add missing header file for OIIO
Antony Riakiotakis
kalast at gmail.com
Tue Feb 3 14:32:21 CET 2015
Revision: 61489
https://developer.blender.org/rBL61489
Author: psy-fi
Date: 2015-02-03 13:32:20 +0000 (Tue, 03 Feb 2015)
Log Message:
-----------
Add missing header file for OIIO
Added Paths:
-----------
trunk/lib/win64_vc12/OpenImageIO/include/OpenImageIO/platform.h
Added: trunk/lib/win64_vc12/OpenImageIO/include/OpenImageIO/platform.h
===================================================================
--- trunk/lib/win64_vc12/OpenImageIO/include/OpenImageIO/platform.h (rev 0)
+++ trunk/lib/win64_vc12/OpenImageIO/include/OpenImageIO/platform.h 2015-02-03 13:32:20 UTC (rev 61489)
@@ -0,0 +1,102 @@
+/*
+ Copyright 2014 Larry Gritz and the other authors and contributors.
+ All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the software's owners nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ (This is the Modified BSD License)
+*/
+
+
+/////////////////////////////////////////////////////////////////////////
+/// @file platform.h
+///
+/// @brief Platform-related macros.
+/////////////////////////////////////////////////////////////////////////
+
+
+#pragma once
+
+#ifdef __MINGW32__
+#include <malloc.h> // for alloca
+#endif
+
+
+
+/// allocates memory, equivalent of C99 type var_name[size]
+#define OIIO_ALLOCA(type, size) ((type*)alloca((size) * sizeof (type)))
+
+/// Deprecated (for namespace pollution reasons)
+#define ALLOCA(type, size) ((type*)alloca((size) * sizeof (type)))
+
+
+// Define a macro that can be used for memory alignment.
+// I think that in a future world of C++1x compatibility, all these can
+// be replaced with [[ align(size) ]].
+#if defined (_MSC_VER)
+# define OIIO_ALIGN(size) __declspec(align(size))
+#elif defined (__GNUC__)
+# define OIIO_ALIGN(size) __attribute__((aligned(size)))
+#elif defined (__INTEL_COMPILER)
+# define OIIO_ALIGN(size) __declspec(align((size)))
+#else
+# error "Don't know how to define OIIO_ALIGN"
+#endif
+
+// Cache line size is 64 on all modern x86 CPUs. If this changes or we
+// anticipate ports to other architectures, we'll need to change this.
+#define OIIO_CACHE_LINE_SIZE 64
+
+// Align the next declaration to be on its own cache line
+#define OIIO_CACHE_ALIGN OIIO_ALIGN(OIIO_CACHE_LINE_SIZE)
+
+
+
+// gcc defines a special intrinsic to use in conditionals that can speed
+// up extremely performance-critical spots if the conditional usually
+// (or rarely) is true. You use it by replacing
+// if (x) ...
+// with
+// if (OIIO_LIKELY(x)) ... // if you think x will usually be true
+// or
+// if (OIIO_UNLIKELY(x)) ... // if you think x will rarely be true
+// Caveat: Programmers are notoriously bad at guessing this, so it
+// should be used only with thorough benchmarking.
+#ifdef __GNUC__
+#define OIIO_LIKELY(x) (__builtin_expect((x), 1))
+#define OIIO_UNLIKELY(x) (__builtin_expect((x), 0))
+#else
+#define OIIO_LIKELY(x) (x)
+#define OIIO_UNLIKELY(x) (x)
+#endif
+
+
+#if defined(__GNUC__) || defined(__clang__)
+# define OIIO_FORCEINLINE inline __attribute__((always_inline))
+#elif defined(_MSC_VER) || defined(__INTEL_COMPILER)
+# define OIIO_FORCEINLINE __forceinline
+#else
+# define OIIO_FORCEINLINE inline
+#endif
+
More information about the Bf-blender-cvs
mailing list