| /* |
| * Copyright (c) 2008, 2009, Wayne Meissner |
| * |
| * Copyright (c) 2008-2013, Ruby FFI project 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 Ruby FFI project 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 <COPYRIGHT HOLDER> 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. |
| */ |
| |
| #ifndef RBFFI_COMPAT_H |
| #define RBFFI_COMPAT_H |
| |
| #include <ruby.h> |
| |
| #ifndef RARRAY_LEN |
| # define RARRAY_LEN(ary) RARRAY(ary)->len |
| #endif |
| |
| #ifndef RARRAY_PTR |
| # define RARRAY_PTR(ary) RARRAY(ary)->ptr |
| #endif |
| |
| #ifndef RSTRING_LEN |
| # define RSTRING_LEN(s) RSTRING(s)->len |
| #endif |
| |
| #ifndef RSTRING_PTR |
| # define RSTRING_PTR(s) RSTRING(s)->ptr |
| #endif |
| |
| #ifndef NUM2ULL |
| # define NUM2ULL(x) rb_num2ull((VALUE)x) |
| #endif |
| |
| #ifndef roundup |
| # define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) |
| #endif |
| |
| #ifdef __GNUC__ |
| # define likely(x) __builtin_expect((x), 1) |
| # define unlikely(x) __builtin_expect((x), 0) |
| #else |
| # define likely(x) (x) |
| # define unlikely(x) (x) |
| #endif |
| |
| #ifndef MAX |
| # define MAX(a, b) ((a) < (b) ? (b) : (a)) |
| #endif |
| #ifndef MIN |
| # define MIN(a, b) ((a) < (b) ? (a) : (b)) |
| #endif |
| |
| #ifndef RB_GC_GUARD |
| # define RB_GC_GUARD(x) (x) |
| #endif |
| |
| #endif /* RBFFI_COMPAT_H */ |