#include "ruby/ruby.h"#include "ruby/encoding.h"#include <sys/types.h>#include <ctype.h>#include <errno.h>Go to the source code of this file.
Defines | |
| #define | GCC_VERSION_SINCE(major, minor, patchlevel) |
| #define | NATINT_PACK |
| #define | BIGENDIAN_P() 0 |
| #define | NATINT_LEN(type, len) (natint?(int)sizeof(type):(int)(len)) |
| #define | define_swapx(x, xtype) |
| #define | swap16(x) ((uint16_t)((((x)&0xFF)<<8) | (((x)>>8)&0xFF))) |
| #define | swap32(x) |
| #define | rb_ntohf(x) (BIGENDIAN_P()?(x):swapf(x)) |
| #define | rb_ntohd(x) (BIGENDIAN_P()?(x):swapd(x)) |
| #define | rb_htonf(x) (BIGENDIAN_P()?(x):swapf(x)) |
| #define | rb_htond(x) (BIGENDIAN_P()?(x):swapd(x)) |
| #define | rb_htovf(x) (BIGENDIAN_P()?swapf(x):(x)) |
| #define | rb_htovd(x) (BIGENDIAN_P()?swapd(x):(x)) |
| #define | rb_vtohf(x) (BIGENDIAN_P()?swapf(x):(x)) |
| #define | rb_vtohd(x) (BIGENDIAN_P()?swapd(x):(x)) |
| #define | FLOAT_CONVWITH(y) |
| #define | HTONF(x, y) rb_htonf(x) |
| #define | HTOVF(x, y) rb_htovf(x) |
| #define | NTOHF(x, y) rb_ntohf(x) |
| #define | VTOHF(x, y) rb_vtohf(x) |
| #define | DOUBLE_CONVWITH(y) |
| #define | HTOND(x, y) rb_htond(x) |
| #define | HTOVD(x, y) rb_htovd(x) |
| #define | NTOHD(x, y) rb_ntohd(x) |
| #define | VTOHD(x, y) rb_vtohd(x) |
| #define | MAX_INTEGER_PACK_SIZE 8 |
| #define | TOO_FEW (rb_raise(rb_eArgError, toofew), 0) |
| #define | THISFROM (items > 0 ? RARRAY_PTR(ary)[idx] : TOO_FEW) |
| #define | NEXTFROM (items-- > 0 ? RARRAY_PTR(ary)[idx++] : TOO_FEW) |
| #define | castchar(from) (char)((from) & 0xff) |
| #define | PACK_LENGTH_ADJUST_SIZE(sz) |
| #define | PACK_ITEM_ADJUST() |
| #define | UNPACK_PUSH(item) |
| #define | BYTEWIDTH 8 |
Functions | |
| define_swapx (s, short) | |
| static void | encodes (VALUE, const char *, long, int, int) |
| static void | qpencode (VALUE, VALUE, long) |
| static unsigned long | utf8_to_uv (const char *, long *) |
| static void | str_associate (VALUE str, VALUE add) |
| static VALUE | str_associated (VALUE str) |
| static VALUE | pack_pack (VALUE ary, VALUE fmt) |
| static int | hex2num (char c) |
| static VALUE | infected_str_new (const char *ptr, long len, VALUE str) |
| static VALUE | pack_unpack (VALUE str, VALUE fmt) |
| int | rb_uv_to_utf8 (char buf[6], unsigned long uv) |
| void | Init_pack (void) |
Variables | |
| static const char | toofew [] = "too few arguments" |
| static ID | id_associated |
| static const char | uu_table [] |
| static const char | b64_table [] |
| static const char | hex_table [] = "0123456789ABCDEF" |
| static const unsigned long | utf8_limits [] |
| #define BIGENDIAN_P | ( | ) | 0 |
Definition at line 46 of file pack.c.
Referenced by pack_pack(), and pack_unpack().
| #define castchar | ( | from | ) | (char)((from) & 0xff) |
Referenced by pack_pack(), pack_unpack(), and rb_uv_to_utf8().
| #define define_swapx | ( | x, | |||
| xtype | ) |
static xtype \ TOKEN_PASTE(swap,x)(xtype z) \ { \ xtype r; \ xtype *zp; \ unsigned char *s, *t; \ int i; \ \ zp = xmalloc(sizeof(xtype)); \ *zp = z; \ s = (unsigned char*)zp; \ t = xmalloc(sizeof(xtype)); \ for (i=0; i<sizeof(xtype); i++) { \ t[sizeof(xtype)-i-1] = s[i]; \ } \ r = *(xtype *)t; \ xfree(t); \ xfree(zp); \ return r; \ }
| #define DOUBLE_CONVWITH | ( | y | ) |
Referenced by pack_pack(), and pack_unpack().
| #define FLOAT_CONVWITH | ( | y | ) |
Referenced by pack_pack(), and pack_unpack().
| #define GCC_VERSION_SINCE | ( | major, | |||
| minor, | |||||
| patchlevel | ) |
| #define HTOND | ( | x, | |||
| y | ) | rb_htond(x) |
Referenced by pack_pack().
| #define HTONF | ( | x, | |||
| y | ) | rb_htonf(x) |
Referenced by pack_pack().
| #define HTOVD | ( | x, | |||
| y | ) | rb_htovd(x) |
Referenced by pack_pack().
| #define HTOVF | ( | x, | |||
| y | ) | rb_htovf(x) |
Referenced by pack_pack().
| #define MAX_INTEGER_PACK_SIZE 8 |
Definition at line 254 of file pack.c.
Referenced by pack_pack(), and pack_unpack().
Definition at line 50 of file pack.c.
Referenced by pack_pack(), and pack_unpack().
| #define NEXTFROM (items-- > 0 ? RARRAY_PTR(ary)[idx++] : TOO_FEW) |
Referenced by pack_pack().
| #define NTOHD | ( | x, | |||
| y | ) | rb_ntohd(x) |
Referenced by pack_unpack().
| #define NTOHF | ( | x, | |||
| y | ) | rb_ntohf(x) |
Referenced by pack_unpack().
| #define PACK_ITEM_ADJUST | ( | ) |
do { \ if (tmp_len > 0 && !block_p) \ rb_ary_store(ary, RARRAY_LEN(ary)+tmp_len-1, Qnil); \ } while (0)
Definition at line 1217 of file pack.c.
Referenced by pack_unpack().
| #define PACK_LENGTH_ADJUST_SIZE | ( | sz | ) |
do { \ tmp_len = 0; \ if (len > (long)((send-s)/(sz))) { \ if (!star) { \ tmp_len = len-(send-s)/(sz); \ } \ len = (send-s)/(sz); \ } \ } while (0)
Definition at line 1207 of file pack.c.
Referenced by pack_unpack().
| #define rb_htond | ( | x | ) | (BIGENDIAN_P()?(x):swapd(x)) |
| #define rb_htonf | ( | x | ) | (BIGENDIAN_P()?(x):swapf(x)) |
| #define rb_htovd | ( | x | ) | (BIGENDIAN_P()?swapd(x):(x)) |
| #define rb_htovf | ( | x | ) | (BIGENDIAN_P()?swapf(x):(x)) |
| #define rb_ntohd | ( | x | ) | (BIGENDIAN_P()?(x):swapd(x)) |
| #define rb_ntohf | ( | x | ) | (BIGENDIAN_P()?(x):swapf(x)) |
| #define rb_vtohd | ( | x | ) | (BIGENDIAN_P()?swapd(x):(x)) |
| #define rb_vtohf | ( | x | ) | (BIGENDIAN_P()?swapf(x):(x)) |
| #define swap16 | ( | x | ) | ((uint16_t)((((x)&0xFF)<<8) | (((x)>>8)&0xFF))) |
Definition at line 91 of file pack.c.
Referenced by pack_pack(), and pack_unpack().
| #define swap32 | ( | x | ) |
((uint32_t)((((x)&0xFF)<<24) \ |(((x)>>24)&0xFF) \ |(((x)&0x0000FF00)<<8) \ |(((x)&0x00FF0000)>>8) ))
Definition at line 95 of file pack.c.
Referenced by define_swapx(), pack_pack(), and pack_unpack().
| #define THISFROM (items > 0 ? RARRAY_PTR(ary)[idx] : TOO_FEW) |
Referenced by pack_pack().
| #define TOO_FEW (rb_raise(rb_eArgError, toofew), 0) |
| #define UNPACK_PUSH | ( | item | ) |
do {\ VALUE item_val = (item);\ if (block_p) {\ rb_yield(item_val);\ }\ else {\ rb_ary_push(ary, item_val);\ }\ } while (0)
Referenced by pack_unpack().
| #define VTOHD | ( | x, | |||
| y | ) | rb_vtohd(x) |
Referenced by pack_unpack().
| #define VTOHF | ( | x, | |||
| y | ) | rb_vtohf(x) |
Referenced by pack_unpack().
| static void encodes | ( | VALUE | str, | |
| const char * | s, | |||
| long | len, | |||
| int | type, | |||
| int | tail_lf | |||
| ) | [static] |
| static int hex2num | ( | char | c | ) | [inline, static] |
Definition at line 1190 of file pack.c.
Referenced by pack_unpack().
| static VALUE infected_str_new | ( | const char * | ptr, | |
| long | len, | |||
| VALUE | str | |||
| ) | [static] |
Definition at line 1223 of file pack.c.
References OBJ_INFECT, and rb_str_new().
Referenced by pack_unpack().
| void Init_pack | ( | void | ) |
Definition at line 2297 of file pack.c.
References pack_pack(), pack_unpack(), rb_cArray, rb_cString, rb_define_method(), and rb_intern_const.
| static VALUE pack_pack | ( | VALUE | ary, | |
| VALUE | fmt | |||
| ) | [static] |
Definition at line 394 of file pack.c.
References BIGENDIAN_P, buf, castchar, DOUBLE_CONVWITH, ENC_CODERANGE_7BIT, encodes(), ENCODING_CODERANGE_SET, errno, f, FLOAT_CONVWITH, HTOND, HTONF, HTOVD, HTOVF, ISALPHA, ISDIGIT, ISSPACE, le, MAX_INTEGER_PACK_SIZE, NATINT_LEN, NEXTFROM, NIL_P, NUM2INT, NUM2LONG, OBJ_INFECT, qpencode(), RARRAY_LEN, RARRAY_PTR, rb_ary_new(), rb_ary_push(), rb_big_divmod(), rb_big_pack(), rb_bug(), rb_eArgError, rb_enc_set_index(), rb_eRangeError, rb_eRuntimeError, rb_obj_as_string(), rb_obj_taint(), rb_raise(), rb_str_buf_cat(), rb_str_buf_new(), rb_str_new(), rb_str_set_len(), rb_to_float(), rb_to_int(), RB_TYPE_P, rb_uint2big(), rb_usascii_encindex(), rb_utf8_encindex(), rb_uv_to_utf8(), rb_warning(), RFLOAT_VALUE, RSTRING_LEN, RSTRING_PTR, SIGNED_VALUE, str_associate(), strchr(), StringValue, StringValuePtr, STRTOUL, swap16, swap32, t(), T_BIGNUM, THISFROM, and type.
Referenced by Init_pack().
| static VALUE pack_unpack | ( | VALUE | str, | |
| VALUE | fmt | |||
| ) | [static] |
Definition at line 1340 of file pack.c.
References BIGENDIAN_P, buf, castchar, DBL2NUM, DOUBLE_CONVWITH, ENC_CODERANGE_VALID, ENCODING_CODERANGE_SET, errno, FLOAT_CONVWITH, hex2num(), infected_str_new(), INT2FIX, INT2NUM, ISDIGIT, ISSPACE, MAX_INTEGER_PACK_SIZE, NATINT_LEN, NTOHD, NTOHF, PACK_ITEM_ADJUST, PACK_LENGTH_ADJUST_SIZE, Qnil, RARRAY_LEN, RARRAY_PTR, rb_ary_new(), rb_ascii8bit_encindex(), rb_big_mul(), rb_big_plus(), rb_big_unpack(), rb_block_given_p(), rb_bug(), rb_eArgError, rb_eRangeError, rb_raise(), rb_str_buf_cat(), rb_str_set_len(), RB_TYPE_P, rb_uint2big(), rb_usascii_str_new(), rb_warning(), RSTRING_LEN, RSTRING_PTR, str_associate(), str_associated(), strchr(), StringValue, STRTOUL, swap16, swap32, t(), T_STRING, type, UINT2NUM, uint64_t, ULONG2NUM, UNPACK_PUSH, utf8_to_uv(), VTOHD, and VTOHF.
Referenced by Init_pack().
| static void qpencode | ( | VALUE | str, | |
| VALUE | from, | |||
| long | len | |||
| ) | [static] |
Definition at line 1137 of file pack.c.
References EOF, prev, rb_str_buf_cat(), RSTRING_LEN, and RSTRING_PTR.
Referenced by pack_pack().
| int rb_uv_to_utf8 | ( | char | buf[6], | |
| unsigned long | uv | |||
| ) |
Definition at line 2190 of file pack.c.
References castchar, rb_eRangeError, rb_raise(), and UNREACHABLE.
Referenced by append_utf8(), and pack_pack().
| static void str_associate | ( | VALUE | str, | |
| VALUE | add | |||
| ) | [static] |
Definition at line 267 of file pack.c.
References rb_ary_concat(), rb_attr_get(), rb_ivar_set(), RB_TYPE_P, and T_ARRAY.
Referenced by pack_pack(), and pack_unpack().
| static VALUE str_associated | ( | VALUE | str | ) | [static] |
Definition at line 282 of file pack.c.
References NIL_P, Qfalse, and rb_attr_get().
Referenced by pack_unpack().
| static unsigned long utf8_to_uv | ( | const char * | p, | |
| long * | lenp | |||
| ) | [static] |
Definition at line 2247 of file pack.c.
References rb_eArgError, and rb_raise().
Referenced by pack_unpack().
const char b64_table[] [static] |
ID id_associated [static] |
const unsigned long utf8_limits[] [static] |
1.6.1