1#ifndef RBIMPL_INTERN_BIGNUM_H
2#define RBIMPL_INTERN_BIGNUM_H
23#include "ruby/internal/config.h"
51VALUE rb_big_new(
size_t len,
int sign);
64int rb_bigzero_p(
VALUE x);
81void rb_big_2comp(
VALUE num);
98void rb_big_resize(
VALUE big,
size_t len);
125VALUE rb_cstr_to_inum(const
char *str,
int base,
int badcheck);
149VALUE rb_str_to_inum(
VALUE str,
int base,
int badcheck);
171VALUE rb_cstr2inum(const
char *str,
int base);
216long rb_big2long(
VALUE x);
219#define rb_big2int(x) rb_big2long(x)
238#define rb_big2uint(x) rb_big2ulong(x)
281void rb_big_pack(
VALUE val,
unsigned long *buf,
long num_longs);
296VALUE rb_big_unpack(
unsigned long *buf,
long num_longs);
326VALUE rb_dbl2big(
double d);
339double rb_big2dbl(
VALUE x);
525#define INTEGER_PACK_MSWORD_FIRST 0x01
528#define INTEGER_PACK_LSWORD_FIRST 0x02
534#define INTEGER_PACK_MSBYTE_FIRST 0x10
540#define INTEGER_PACK_LSBYTE_FIRST 0x20
546#define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40
549#define INTEGER_PACK_2COMP 0x80
552#define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400
558#define INTEGER_PACK_FORCE_BIGNUM 0x100
564#define INTEGER_PACK_NEGATIVE 0x200
567#define INTEGER_PACK_LITTLE_ENDIAN \
568 (INTEGER_PACK_LSWORD_FIRST | \
569 INTEGER_PACK_LSBYTE_FIRST)
572#define INTEGER_PACK_BIG_ENDIAN \
573 (INTEGER_PACK_MSWORD_FIRST | \
574 INTEGER_PACK_MSBYTE_FIRST)
679int rb_integer_pack(
VALUE val,
void *words,
size_t numwords,
size_t wordsize,
size_t nails,
int flags);
761VALUE rb_integer_unpack(const
void *words,
size_t numwords,
size_t wordsize,
size_t nails,
int flags);
781size_t rb_absint_size(
VALUE val,
int *nlz_bits_ret);
804size_t rb_absint_numwords(
VALUE val,
size_t word_numbits,
size_t *nlz_bits_ret);
842int rb_absint_singlebit_p(
VALUE val);
Tweaking visibility of C variables/functions.
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
unsigned long rb_big2ulong(VALUE x)
Converts a bignum into C's unsigned long.
int rb_uv_to_utf8(char buf[6], unsigned long uv)
Encodes a Unicode codepoint into its UTF-8 representation.
int len
Length of the buffer.
Defines RBIMPL_ATTR_NONNULL.
#define RBIMPL_ATTR_NONNULL(list)
Wraps (or simulates) __attribute__((nonnull))
uintptr_t VALUE
Type that represents a Ruby object.