msgpack/ruby/compat.h
Brian Ford b62a6ae1d0 Update ruby/compat.h
The exceptions for Rubinius are unnecessary now and are actually
causing msgpack not to install due to the incorrect function prototypes
that are in this file. In MRI, this is the prototype

  VALUE rb_gc_enable();

Anyway, these are unnecessary for Rubinius.
2012-12-16 16:27:05 -08:00

91 lines
1.9 KiB
C

/*
* MessagePack for Ruby
*
* Copyright (C) 2008-2010 FURUHASHI Sadayuki
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef COMPAT_H__
#define COMPAT_H__
#ifdef HAVE_RUBY_ENCODING_H
#include "ruby/encoding.h"
#define COMPAT_HAVE_ENCODING
extern int s_enc_utf8;
extern int s_enc_ascii8bit;
extern int s_enc_usascii;
extern VALUE s_enc_utf8_value;
#endif
/* MRI 1.9 */
#if defined(RUBY_VM)
#define COMPAT_RERAISE rb_exc_raise(rb_errinfo())
/* JRuby */
#elif defined(JRUBY)
#define COMPAT_RERAISE rb_exc_raise(rb_gv_get("$!"))
/* MRI 1.8 and Rubinius */
#else
#define COMPAT_RERAISE rb_exc_raise(ruby_errinfo)
#endif
#ifndef RBIGNUM_POSITIVE_P
/* JRuby */
#if defined(JRUBY)
#define RBIGNUM_POSITIVE_P(b) (rb_funcall(b, rb_intern(">="), 1, INT2FIX(0)) == Qtrue)
#define rb_big2ull(b) rb_num2ull(b)
/*#define rb_big2ll(b) rb_num2ll(b)*/
/* MRI 1.8 */
#else
#define RBIGNUM_POSITIVE_P(b) (RBIGNUM(b)->sign)
#endif
#endif
/* JRuby */
#if defined(JRUBY)
static inline void rb_gc_enable() { return; }
static inline void rb_gc_disable() { return; }
#endif
/* MRI 1.8.5 */
#ifndef RSTRING_PTR
#define RSTRING_PTR(s) (RSTRING(s)->ptr)
#endif
/* MRI 1.8.5 */
#ifndef RSTRING_LEN
#define RSTRING_LEN(s) (RSTRING(s)->len)
#endif
/* MRI 1.8.5 */
#ifndef RARRAY_PTR
#define RARRAY_PTR(s) (RARRAY(s)->ptr)
#endif
/* MRI 1.8.5 */
#ifndef RARRAY_LEN
#define RARRAY_LEN(s) (RARRAY(s)->len)
#endif
#endif /* compat.h */