Sha256: ed2424a66df85ba9ac633fe30bc67a09a18cffe810da531bf4312735c3ef8742

Contents?: true

Size: 852 Bytes

Versions: 1

Compression:

Stored size: 852 Bytes

Contents

use core::mem::transmute;
use rb_sys::*;
use std::ffi::c_void;

// Convert str literal to C string literal
macro_rules! cstr {
    ($s:expr) => {
        concat!($s, "\0").as_ptr() as *const std::ffi::c_char
    };
}
pub(crate) use cstr;

pub type RubyCFunc = unsafe extern "C" fn() -> VALUE;

// TODO: rewrite as macro
pub fn to_ruby_cfunc1<T>(f: unsafe extern "C" fn(T) -> VALUE) -> RubyCFunc {
    unsafe { transmute::<unsafe extern "C" fn(T) -> VALUE, RubyCFunc>(f) }
}
pub fn to_ruby_cfunc3<T, U, V>(f: unsafe extern "C" fn(T, U, V) -> VALUE) -> RubyCFunc {
    unsafe { transmute::<unsafe extern "C" fn(T, U, V) -> VALUE, RubyCFunc>(f) }
}

#[allow(non_snake_case)]
pub fn RTEST(v: VALUE) -> bool {
    v != Qfalse as VALUE && v != Qnil as VALUE
}

extern "C" {
    pub fn extract_si_value_sival_ptr(info: *mut libc::siginfo_t) -> *mut c_void;
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pf2-0.2.0 ext/pf2/src/util.rs