msgpack 0.2.2-mswin32 → 0.3.1-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/msgpack.so +0 -0
 - data/ext/pack.c +4 -4
 - data/ext/pack.h +2 -2
 - data/ext/pack.o +0 -0
 - data/ext/rbinit.c +1 -1
 - data/ext/rbinit.o +0 -0
 - data/ext/unpack.c +94 -78
 - data/ext/unpack.h +2 -2
 - data/ext/unpack.o +0 -0
 - metadata +4 -6
 - data/lib/msgpack/version.rb +0 -9
 
    
        data/ext/msgpack.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/ext/pack.c
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
     | 
    
         
            -
             * MessagePack packing routine 
     | 
| 
      
 2 
     | 
    
         
            +
             * MessagePack for Ruby packing routine
         
     | 
| 
       3 
3 
     | 
    
         
             
             *
         
     | 
| 
       4 
     | 
    
         
            -
             * Copyright (C) 2008 FURUHASHI Sadayuki
         
     | 
| 
      
 4 
     | 
    
         
            +
             * Copyright (C) 2008-2009 FURUHASHI Sadayuki
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             *    Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
       7 
7 
     | 
    
         
             
             *    you may not use this file except in compliance with the License.
         
     | 
| 
         @@ -19,10 +19,10 @@ 
     | 
|
| 
       19 
19 
     | 
    
         
             
            #include "msgpack/pack_define.h"
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
            #define msgpack_pack_inline_func(name) \
         
     | 
| 
       22 
     | 
    
         
            -
            	static inline void  
     | 
| 
      
 22 
     | 
    
         
            +
            	static inline void msgpack_pack ## name
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            #define msgpack_pack_inline_func_cint(name) \
         
     | 
| 
       25 
     | 
    
         
            -
            	static inline void  
     | 
| 
      
 25 
     | 
    
         
            +
            	static inline void msgpack_pack ## name
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
            #define msgpack_pack_user VALUE
         
     | 
| 
       28 
28 
     | 
    
         | 
    
        data/ext/pack.h
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
     | 
    
         
            -
             * MessagePack packing routine 
     | 
| 
      
 2 
     | 
    
         
            +
             * MessagePack for Ruby packing routine
         
     | 
| 
       3 
3 
     | 
    
         
             
             *
         
     | 
| 
       4 
     | 
    
         
            -
             * Copyright (C) 2008 FURUHASHI Sadayuki
         
     | 
| 
      
 4 
     | 
    
         
            +
             * Copyright (C) 2008-2009 FURUHASHI Sadayuki
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             *    Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
       7 
7 
     | 
    
         
             
             *    you may not use this file except in compliance with the License.
         
     | 
    
        data/ext/pack.o
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/ext/rbinit.c
    CHANGED
    
    
    
        data/ext/rbinit.o
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/ext/unpack.c
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
     | 
    
         
            -
             * MessagePack unpacking routine 
     | 
| 
      
 2 
     | 
    
         
            +
             * MessagePack for Ruby unpacking routine
         
     | 
| 
       3 
3 
     | 
    
         
             
             *
         
     | 
| 
       4 
     | 
    
         
            -
             * Copyright (C) 2008 FURUHASHI Sadayuki
         
     | 
| 
      
 4 
     | 
    
         
            +
             * Copyright (C) 2008-2009 FURUHASHI Sadayuki
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             *    Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
       7 
7 
     | 
    
         
             
             *    you may not use this file except in compliance with the License.
         
     | 
| 
         @@ -21,99 +21,99 @@ 
     | 
|
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
            typedef struct {
         
     | 
| 
       23 
23 
     | 
    
         
             
            	int finished;
         
     | 
| 
       24 
     | 
    
         
            -
            	VALUE  
     | 
| 
       25 
     | 
    
         
            -
            }  
     | 
| 
      
 24 
     | 
    
         
            +
            	VALUE source;
         
     | 
| 
      
 25 
     | 
    
         
            +
            } unpack_user;
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
            #define msgpack_unpack_struct(name) \
         
     | 
| 
       29 
     | 
    
         
            -
            	struct  
     | 
| 
      
 29 
     | 
    
         
            +
            	struct template ## name
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            #define msgpack_unpack_func(ret, name) \
         
     | 
| 
       32 
     | 
    
         
            -
            	ret  
     | 
| 
      
 32 
     | 
    
         
            +
            	ret template ## name
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #define msgpack_unpack_callback(name) \
         
     | 
| 
       35 
     | 
    
         
            -
            	 
     | 
| 
      
 35 
     | 
    
         
            +
            	template_callback ## name
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
37 
     | 
    
         
             
            #define msgpack_unpack_object VALUE
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
            #define msgpack_unpack_user  
     | 
| 
      
 39 
     | 
    
         
            +
            #define msgpack_unpack_user unpack_user
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
            struct  
     | 
| 
       43 
     | 
    
         
            -
            typedef struct  
     | 
| 
      
 42 
     | 
    
         
            +
            struct template_context;
         
     | 
| 
      
 43 
     | 
    
         
            +
            typedef struct template_context msgpack_unpack_t;
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
            static void  
     | 
| 
      
 45 
     | 
    
         
            +
            static void template_init(msgpack_unpack_t* u);
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
            static VALUE  
     | 
| 
      
 47 
     | 
    
         
            +
            static VALUE template_data(msgpack_unpack_t* u);
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
            static int  
     | 
| 
      
 49 
     | 
    
         
            +
            static int template_execute(msgpack_unpack_t* u,
         
     | 
| 
       50 
50 
     | 
    
         
             
            		const char* data, size_t len, size_t* off);
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
            static inline VALUE  
     | 
| 
      
 53 
     | 
    
         
            +
            static inline VALUE template_callback_root(unpack_user* u)
         
     | 
| 
       54 
54 
     | 
    
         
             
            { return Qnil; }
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
            static inline  
     | 
| 
       57 
     | 
    
         
            -
            {  
     | 
| 
      
 56 
     | 
    
         
            +
            static inline int template_callback_uint8(unpack_user* u, uint8_t d, VALUE* o)
         
     | 
| 
      
 57 
     | 
    
         
            +
            { *o = INT2FIX(d); return 0; }
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
            static inline  
     | 
| 
       60 
     | 
    
         
            -
            {  
     | 
| 
      
 59 
     | 
    
         
            +
            static inline int template_callback_uint16(unpack_user* u, uint16_t d, VALUE* o)
         
     | 
| 
      
 60 
     | 
    
         
            +
            { *o = INT2FIX(d); return 0; }
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
            static inline  
     | 
| 
       63 
     | 
    
         
            -
            {  
     | 
| 
      
 62 
     | 
    
         
            +
            static inline int template_callback_uint32(unpack_user* u, uint32_t d, VALUE* o)
         
     | 
| 
      
 63 
     | 
    
         
            +
            { *o = UINT2NUM(d); return 0; }
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
     | 
    
         
            -
            static inline  
     | 
| 
       66 
     | 
    
         
            -
            {  
     | 
| 
      
 65 
     | 
    
         
            +
            static inline int template_callback_uint64(unpack_user* u, uint64_t d, VALUE* o)
         
     | 
| 
      
 66 
     | 
    
         
            +
            { *o = rb_ull2inum(d); return 0; }
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
            static inline  
     | 
| 
       69 
     | 
    
         
            -
            {  
     | 
| 
      
 68 
     | 
    
         
            +
            static inline int template_callback_int8(unpack_user* u, int8_t d, VALUE* o)
         
     | 
| 
      
 69 
     | 
    
         
            +
            { *o = INT2FIX((long)d); return 0; }
         
     | 
| 
       70 
70 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
            static inline  
     | 
| 
       72 
     | 
    
         
            -
            {  
     | 
| 
      
 71 
     | 
    
         
            +
            static inline int template_callback_int16(unpack_user* u, int16_t d, VALUE* o)
         
     | 
| 
      
 72 
     | 
    
         
            +
            { *o = INT2FIX((long)d); return 0; }
         
     | 
| 
       73 
73 
     | 
    
         | 
| 
       74 
     | 
    
         
            -
            static inline  
     | 
| 
       75 
     | 
    
         
            -
            {  
     | 
| 
      
 74 
     | 
    
         
            +
            static inline int template_callback_int32(unpack_user* u, int32_t d, VALUE* o)
         
     | 
| 
      
 75 
     | 
    
         
            +
            { *o = INT2NUM((long)d); return 0; }
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
            static inline  
     | 
| 
       78 
     | 
    
         
            -
            {  
     | 
| 
      
 77 
     | 
    
         
            +
            static inline int template_callback_int64(unpack_user* u, int64_t d, VALUE* o)
         
     | 
| 
      
 78 
     | 
    
         
            +
            { *o = rb_ll2inum(d); return 0; }
         
     | 
| 
       79 
79 
     | 
    
         | 
| 
       80 
     | 
    
         
            -
            static inline  
     | 
| 
       81 
     | 
    
         
            -
            {  
     | 
| 
      
 80 
     | 
    
         
            +
            static inline int template_callback_float(unpack_user* u, float d, VALUE* o)
         
     | 
| 
      
 81 
     | 
    
         
            +
            { *o = rb_float_new(d); return 0; }
         
     | 
| 
       82 
82 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
            static inline  
     | 
| 
       84 
     | 
    
         
            -
            {  
     | 
| 
      
 83 
     | 
    
         
            +
            static inline int template_callback_double(unpack_user* u, double d, VALUE* o)
         
     | 
| 
      
 84 
     | 
    
         
            +
            { *o = rb_float_new(d); return 0; }
         
     | 
| 
       85 
85 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
            static inline  
     | 
| 
       87 
     | 
    
         
            -
            {  
     | 
| 
      
 86 
     | 
    
         
            +
            static inline int template_callback_nil(unpack_user* u, VALUE* o)
         
     | 
| 
      
 87 
     | 
    
         
            +
            { *o = Qnil; return 0; }
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
            static inline  
     | 
| 
       90 
     | 
    
         
            -
            {  
     | 
| 
      
 89 
     | 
    
         
            +
            static inline int template_callback_true(unpack_user* u, VALUE* o)
         
     | 
| 
      
 90 
     | 
    
         
            +
            { *o = Qtrue; return 0; }
         
     | 
| 
       91 
91 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
            static inline  
     | 
| 
       93 
     | 
    
         
            -
            {  
     | 
| 
      
 92 
     | 
    
         
            +
            static inline int template_callback_false(unpack_user* u, VALUE* o)
         
     | 
| 
      
 93 
     | 
    
         
            +
            { *o = Qfalse; return 0;}
         
     | 
| 
       94 
94 
     | 
    
         | 
| 
       95 
     | 
    
         
            -
            static inline  
     | 
| 
       96 
     | 
    
         
            -
            {  
     | 
| 
      
 95 
     | 
    
         
            +
            static inline int template_callback_array(unpack_user* u, unsigned int n, VALUE* o)
         
     | 
| 
      
 96 
     | 
    
         
            +
            { *o = rb_ary_new2(n); return 0; }
         
     | 
| 
       97 
97 
     | 
    
         | 
| 
       98 
     | 
    
         
            -
            static inline  
     | 
| 
       99 
     | 
    
         
            -
            { rb_ary_push(*c, o); }  // FIXME set value directry RARRAY_PTR(obj)[RARRAY_LEN(obj)++]
         
     | 
| 
      
 98 
     | 
    
         
            +
            static inline int template_callback_array_item(unpack_user* u, VALUE* c, VALUE o)
         
     | 
| 
      
 99 
     | 
    
         
            +
            { rb_ary_push(*c, o); return 0; }  // FIXME set value directry RARRAY_PTR(obj)[RARRAY_LEN(obj)++]
         
     | 
| 
       100 
100 
     | 
    
         | 
| 
       101 
     | 
    
         
            -
            static inline  
     | 
| 
       102 
     | 
    
         
            -
            {  
     | 
| 
      
 101 
     | 
    
         
            +
            static inline int template_callback_map(unpack_user* u, unsigned int n, VALUE* o)
         
     | 
| 
      
 102 
     | 
    
         
            +
            { *o = rb_hash_new(); return 0; }
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
       104 
     | 
    
         
            -
            static inline  
     | 
| 
       105 
     | 
    
         
            -
            { rb_hash_aset(*c, k, v); }
         
     | 
| 
      
 104 
     | 
    
         
            +
            static inline int template_callback_map_item(unpack_user* u, VALUE* c, VALUE k, VALUE v)
         
     | 
| 
      
 105 
     | 
    
         
            +
            { rb_hash_aset(*c, k, v); return 0; }
         
     | 
| 
       106 
106 
     | 
    
         | 
| 
       107 
     | 
    
         
            -
            static inline  
     | 
| 
       108 
     | 
    
         
            -
            {  
     | 
| 
      
 107 
     | 
    
         
            +
            static inline int template_callback_raw(unpack_user* u, const char* b, const char* p, unsigned int l, VALUE* o)
         
     | 
| 
      
 108 
     | 
    
         
            +
            { *o = (l == 0) ? rb_str_new(0,0) : rb_str_substr(u->source, p - b, l); return 0; }
         
     | 
| 
       109 
109 
     | 
    
         | 
| 
       110 
110 
     | 
    
         | 
| 
       111 
111 
     | 
    
         
             
            #include "msgpack/unpack_template.h"
         
     | 
| 
       112 
112 
     | 
    
         | 
| 
       113 
113 
     | 
    
         | 
| 
       114 
114 
     | 
    
         
             
            #define UNPACKER(from, name) \
         
     | 
| 
       115 
     | 
    
         
            -
            	 
     | 
| 
       116 
     | 
    
         
            -
            	Data_Get_Struct(from,  
     | 
| 
      
 115 
     | 
    
         
            +
            	msgpack_unpack_t *name = NULL; \
         
     | 
| 
      
 116 
     | 
    
         
            +
            	Data_Get_Struct(from, msgpack_unpack_t, name); \
         
     | 
| 
       117 
117 
     | 
    
         
             
            	if(name == NULL) { \
         
     | 
| 
       118 
118 
     | 
    
         
             
            		rb_raise(rb_eArgError, "NULL found for " # name " when shouldn't be."); \
         
     | 
| 
       119 
119 
     | 
    
         
             
            	}
         
     | 
| 
         @@ -132,7 +132,7 @@ static void MessagePack_Unpacker_free(void* data) 
     | 
|
| 
       132 
132 
     | 
    
         
             
            	if(data) { free(data); }
         
     | 
| 
       133 
133 
     | 
    
         
             
            }
         
     | 
| 
       134 
134 
     | 
    
         | 
| 
       135 
     | 
    
         
            -
            static void MessagePack_Unpacker_mark( 
     | 
| 
      
 135 
     | 
    
         
            +
            static void MessagePack_Unpacker_mark(msgpack_unpack_t *mp)
         
     | 
| 
       136 
136 
     | 
    
         
             
            {
         
     | 
| 
       137 
137 
     | 
    
         
             
            	unsigned int i;
         
     | 
| 
       138 
138 
     | 
    
         
             
            	for(i=0; i < mp->top; ++i) {
         
     | 
| 
         @@ -144,7 +144,7 @@ static void MessagePack_Unpacker_mark(msgpack_unpacker *mp) 
     | 
|
| 
       144 
144 
     | 
    
         
             
            static VALUE MessagePack_Unpacker_alloc(VALUE klass)
         
     | 
| 
       145 
145 
     | 
    
         
             
            {
         
     | 
| 
       146 
146 
     | 
    
         
             
            	VALUE obj;
         
     | 
| 
       147 
     | 
    
         
            -
            	 
     | 
| 
      
 147 
     | 
    
         
            +
            	msgpack_unpack_t* mp = ALLOC_N(msgpack_unpack_t, 1);
         
     | 
| 
       148 
148 
     | 
    
         
             
            	obj = Data_Wrap_Struct(klass, MessagePack_Unpacker_mark,
         
     | 
| 
       149 
149 
     | 
    
         
             
            			MessagePack_Unpacker_free, mp);
         
     | 
| 
       150 
150 
     | 
    
         
             
            	return obj;
         
     | 
| 
         @@ -153,9 +153,9 @@ static VALUE MessagePack_Unpacker_alloc(VALUE klass) 
     | 
|
| 
       153 
153 
     | 
    
         
             
            static VALUE MessagePack_Unpacker_reset(VALUE self)
         
     | 
| 
       154 
154 
     | 
    
         
             
            {
         
     | 
| 
       155 
155 
     | 
    
         
             
            	UNPACKER(self, mp);
         
     | 
| 
       156 
     | 
    
         
            -
            	 
     | 
| 
       157 
     | 
    
         
            -
            	 
     | 
| 
       158 
     | 
    
         
            -
            	mp->user =  
     | 
| 
      
 156 
     | 
    
         
            +
            	template_init(mp);
         
     | 
| 
      
 157 
     | 
    
         
            +
            	unpack_user u = {0, Qnil};
         
     | 
| 
      
 158 
     | 
    
         
            +
            	mp->user = u;
         
     | 
| 
       159 
159 
     | 
    
         
             
            	return self;
         
     | 
| 
       160 
160 
     | 
    
         
             
            }
         
     | 
| 
       161 
161 
     | 
    
         | 
| 
         @@ -169,21 +169,20 @@ static VALUE MessagePack_Unpacker_execute_impl(VALUE args) 
     | 
|
| 
       169 
169 
     | 
    
         
             
            {
         
     | 
| 
       170 
170 
     | 
    
         
             
            	VALUE self = ((VALUE*)args)[0];
         
     | 
| 
       171 
171 
     | 
    
         
             
            	VALUE data = ((VALUE*)args)[1];
         
     | 
| 
       172 
     | 
    
         
            -
            	VALUE off  = ((VALUE*)args)[2];
         
     | 
| 
       173 
172 
     | 
    
         | 
| 
       174 
173 
     | 
    
         
             
            	UNPACKER(self, mp);
         
     | 
| 
       175 
     | 
    
         
            -
            	size_t from = NUM2UINT( 
     | 
| 
      
 174 
     | 
    
         
            +
            	size_t from = NUM2UINT(((VALUE*)args)[2]);
         
     | 
| 
       176 
175 
     | 
    
         
             
            	char* dptr = RSTRING_PTR(data);
         
     | 
| 
       177 
     | 
    
         
            -
            	long dlen =  
     | 
| 
      
 176 
     | 
    
         
            +
            	long dlen = FIX2LONG(((VALUE*)args)[3]);
         
     | 
| 
       178 
177 
     | 
    
         
             
            	int ret;
         
     | 
| 
       179 
178 
     | 
    
         | 
| 
       180 
179 
     | 
    
         
             
            	if(from >= dlen) {
         
     | 
| 
       181 
180 
     | 
    
         
             
            		rb_raise(eUnpackError, "offset is bigger than data buffer size.");
         
     | 
| 
       182 
181 
     | 
    
         
             
            	}
         
     | 
| 
       183 
182 
     | 
    
         | 
| 
       184 
     | 
    
         
            -
            	mp->user. 
     | 
| 
       185 
     | 
    
         
            -
            	ret =  
     | 
| 
       186 
     | 
    
         
            -
            	mp->user. 
     | 
| 
      
 183 
     | 
    
         
            +
            	mp->user.source = data;
         
     | 
| 
      
 184 
     | 
    
         
            +
            	ret = template_execute(mp, dptr, (size_t)dlen, &from);
         
     | 
| 
      
 185 
     | 
    
         
            +
            	mp->user.source = Qnil;
         
     | 
| 
       187 
186 
     | 
    
         | 
| 
       188 
187 
     | 
    
         
             
            	if(ret < 0) {
         
     | 
| 
       189 
188 
     | 
    
         
             
            		rb_raise(eUnpackError, "parse error.");
         
     | 
| 
         @@ -206,17 +205,24 @@ static VALUE MessagePack_Unpacker_execute_rescue(VALUE nouse) 
     | 
|
| 
       206 
205 
     | 
    
         
             
            #endif
         
     | 
| 
       207 
206 
     | 
    
         
             
            }
         
     | 
| 
       208 
207 
     | 
    
         | 
| 
       209 
     | 
    
         
            -
            static VALUE  
     | 
| 
      
 208 
     | 
    
         
            +
            static VALUE MessagePack_Unpacker_execute_limit(VALUE self, VALUE data,
         
     | 
| 
      
 209 
     | 
    
         
            +
            		VALUE off, VALUE limit)
         
     | 
| 
       210 
210 
     | 
    
         
             
            {
         
     | 
| 
       211 
211 
     | 
    
         
             
            	// FIXME execute実行中はmp->topが更新されないのでGC markが機能しない
         
     | 
| 
       212 
212 
     | 
    
         
             
            	rb_gc_disable();
         
     | 
| 
       213 
     | 
    
         
            -
            	VALUE args[ 
     | 
| 
      
 213 
     | 
    
         
            +
            	VALUE args[4] = {self, data, off, limit};
         
     | 
| 
       214 
214 
     | 
    
         
             
            	VALUE ret = rb_rescue(MessagePack_Unpacker_execute_impl, (VALUE)args,
         
     | 
| 
       215 
215 
     | 
    
         
             
            			MessagePack_Unpacker_execute_rescue, Qnil);
         
     | 
| 
       216 
216 
     | 
    
         
             
            	rb_gc_enable();
         
     | 
| 
       217 
217 
     | 
    
         
             
            	return ret;
         
     | 
| 
       218 
218 
     | 
    
         
             
            }
         
     | 
| 
       219 
219 
     | 
    
         | 
| 
      
 220 
     | 
    
         
            +
            static VALUE MessagePack_Unpacker_execute(VALUE self, VALUE data, VALUE off)
         
     | 
| 
      
 221 
     | 
    
         
            +
            {
         
     | 
| 
      
 222 
     | 
    
         
            +
            	return MessagePack_Unpacker_execute_limit(self, data, off,
         
     | 
| 
      
 223 
     | 
    
         
            +
            			LONG2FIX(RSTRING_LEN(data)));
         
     | 
| 
      
 224 
     | 
    
         
            +
            }
         
     | 
| 
      
 225 
     | 
    
         
            +
             
     | 
| 
       220 
226 
     | 
    
         
             
            static VALUE MessagePack_Unpacker_finished_p(VALUE self)
         
     | 
| 
       221 
227 
     | 
    
         
             
            {
         
     | 
| 
       222 
228 
     | 
    
         
             
            	UNPACKER(self, mp);
         
     | 
| 
         @@ -229,23 +235,23 @@ static VALUE MessagePack_Unpacker_finished_p(VALUE self) 
     | 
|
| 
       229 
235 
     | 
    
         
             
            static VALUE MessagePack_Unpacker_data(VALUE self)
         
     | 
| 
       230 
236 
     | 
    
         
             
            {
         
     | 
| 
       231 
237 
     | 
    
         
             
            	UNPACKER(self, mp);
         
     | 
| 
       232 
     | 
    
         
            -
            	return  
     | 
| 
      
 238 
     | 
    
         
            +
            	return template_data(mp);
         
     | 
| 
       233 
239 
     | 
    
         
             
            }
         
     | 
| 
       234 
240 
     | 
    
         | 
| 
       235 
241 
     | 
    
         | 
| 
       236 
242 
     | 
    
         
             
            static VALUE MessagePack_unpack_impl(VALUE args)
         
     | 
| 
       237 
243 
     | 
    
         
             
            {
         
     | 
| 
       238 
     | 
    
         
            -
            	 
     | 
| 
      
 244 
     | 
    
         
            +
            	msgpack_unpack_t* mp = (msgpack_unpack_t*)((VALUE*)args)[0];
         
     | 
| 
       239 
245 
     | 
    
         
             
            	VALUE data = ((VALUE*)args)[1];
         
     | 
| 
       240 
246 
     | 
    
         | 
| 
       241 
247 
     | 
    
         
             
            	size_t from = 0;
         
     | 
| 
       242 
248 
     | 
    
         
             
            	char* dptr = RSTRING_PTR(data);
         
     | 
| 
       243 
     | 
    
         
            -
            	long dlen =  
     | 
| 
      
 249 
     | 
    
         
            +
            	long dlen = FIX2LONG(((VALUE*)args)[2]);
         
     | 
| 
       244 
250 
     | 
    
         
             
            	int ret;
         
     | 
| 
       245 
251 
     | 
    
         | 
| 
       246 
     | 
    
         
            -
            	mp->user. 
     | 
| 
       247 
     | 
    
         
            -
            	ret =  
     | 
| 
       248 
     | 
    
         
            -
            	mp->user. 
     | 
| 
      
 252 
     | 
    
         
            +
            	mp->user.source = data;
         
     | 
| 
      
 253 
     | 
    
         
            +
            	ret = template_execute(mp, dptr, (size_t)dlen, &from);
         
     | 
| 
      
 254 
     | 
    
         
            +
            	mp->user.source = Qnil;
         
     | 
| 
       249 
255 
     | 
    
         | 
| 
       250 
256 
     | 
    
         
             
            	if(ret < 0) {
         
     | 
| 
       251 
257 
     | 
    
         
             
            		rb_raise(eUnpackError, "parse error.");
         
     | 
| 
         @@ -255,7 +261,7 @@ static VALUE MessagePack_unpack_impl(VALUE args) 
     | 
|
| 
       255 
261 
     | 
    
         
             
            		if(from < dlen) {
         
     | 
| 
       256 
262 
     | 
    
         
             
            			rb_raise(eUnpackError, "extra bytes.");
         
     | 
| 
       257 
263 
     | 
    
         
             
            		}
         
     | 
| 
       258 
     | 
    
         
            -
            		return  
     | 
| 
      
 264 
     | 
    
         
            +
            		return template_data(mp);
         
     | 
| 
       259 
265 
     | 
    
         
             
            	}
         
     | 
| 
       260 
266 
     | 
    
         
             
            }
         
     | 
| 
       261 
267 
     | 
    
         | 
| 
         @@ -269,22 +275,30 @@ static VALUE MessagePack_unpack_rescue(VALUE args) 
     | 
|
| 
       269 
275 
     | 
    
         
             
            #endif
         
     | 
| 
       270 
276 
     | 
    
         
             
            }
         
     | 
| 
       271 
277 
     | 
    
         | 
| 
       272 
     | 
    
         
            -
            static VALUE  
     | 
| 
      
 278 
     | 
    
         
            +
            static VALUE MessagePack_unpack_limit(VALUE self, VALUE data, VALUE limit)
         
     | 
| 
       273 
279 
     | 
    
         
             
            {
         
     | 
| 
       274 
280 
     | 
    
         
             
            	CHECK_STRING_TYPE(data);
         
     | 
| 
       275 
     | 
    
         
            -
             
     | 
| 
       276 
     | 
    
         
            -
            	 
     | 
| 
       277 
     | 
    
         
            -
            	 
     | 
| 
       278 
     | 
    
         
            -
            	 
     | 
| 
      
 281 
     | 
    
         
            +
             
     | 
| 
      
 282 
     | 
    
         
            +
            	msgpack_unpack_t mp;
         
     | 
| 
      
 283 
     | 
    
         
            +
            	template_init(&mp);
         
     | 
| 
      
 284 
     | 
    
         
            +
            	unpack_user u = {0, Qnil};
         
     | 
| 
      
 285 
     | 
    
         
            +
            	mp.user = u;
         
     | 
| 
       279 
286 
     | 
    
         | 
| 
       280 
287 
     | 
    
         
             
            	rb_gc_disable();
         
     | 
| 
       281 
     | 
    
         
            -
            	VALUE args[ 
     | 
| 
      
 288 
     | 
    
         
            +
            	VALUE args[3] = {(VALUE)&mp, data, limit};
         
     | 
| 
       282 
289 
     | 
    
         
             
            	VALUE ret = rb_rescue(MessagePack_unpack_impl, (VALUE)args,
         
     | 
| 
       283 
290 
     | 
    
         
             
            			MessagePack_unpack_rescue, Qnil);
         
     | 
| 
       284 
291 
     | 
    
         
             
            	rb_gc_enable();
         
     | 
| 
      
 292 
     | 
    
         
            +
             
     | 
| 
       285 
293 
     | 
    
         
             
            	return ret;
         
     | 
| 
       286 
294 
     | 
    
         
             
            }
         
     | 
| 
       287 
295 
     | 
    
         | 
| 
      
 296 
     | 
    
         
            +
            static VALUE MessagePack_unpack(VALUE self, VALUE data)
         
     | 
| 
      
 297 
     | 
    
         
            +
            {
         
     | 
| 
      
 298 
     | 
    
         
            +
            	return MessagePack_unpack_limit(self, data,
         
     | 
| 
      
 299 
     | 
    
         
            +
            			LONG2FIX(RSTRING_LEN(data)));
         
     | 
| 
      
 300 
     | 
    
         
            +
            }
         
     | 
| 
      
 301 
     | 
    
         
            +
             
     | 
| 
       288 
302 
     | 
    
         | 
| 
       289 
303 
     | 
    
         
             
            void Init_msgpack_unpack(VALUE mMessagePack)
         
     | 
| 
       290 
304 
     | 
    
         
             
            {
         
     | 
| 
         @@ -293,10 +307,12 @@ void Init_msgpack_unpack(VALUE mMessagePack) 
     | 
|
| 
       293 
307 
     | 
    
         
             
            	rb_define_alloc_func(cUnpacker, MessagePack_Unpacker_alloc);
         
     | 
| 
       294 
308 
     | 
    
         
             
            	rb_define_method(cUnpacker, "initialize", MessagePack_Unpacker_initialize, 0);
         
     | 
| 
       295 
309 
     | 
    
         
             
            	rb_define_method(cUnpacker, "execute", MessagePack_Unpacker_execute, 2);
         
     | 
| 
      
 310 
     | 
    
         
            +
            	rb_define_method(cUnpacker, "execute_limit", MessagePack_Unpacker_execute_limit, 3);
         
     | 
| 
       296 
311 
     | 
    
         
             
            	rb_define_method(cUnpacker, "finished?", MessagePack_Unpacker_finished_p, 0);
         
     | 
| 
       297 
312 
     | 
    
         
             
            	rb_define_method(cUnpacker, "data", MessagePack_Unpacker_data, 0);
         
     | 
| 
       298 
313 
     | 
    
         
             
            	rb_define_method(cUnpacker, "reset", MessagePack_Unpacker_reset, 0);
         
     | 
| 
       299 
314 
     | 
    
         
             
            	rb_define_module_function(mMessagePack, "unpack", MessagePack_unpack, 1);
         
     | 
| 
      
 315 
     | 
    
         
            +
            	rb_define_module_function(mMessagePack, "unpack_limit", MessagePack_unpack_limit, 2);
         
     | 
| 
       300 
316 
     | 
    
         
             
            }
         
     | 
| 
       301 
317 
     | 
    
         | 
| 
       302 
318 
     | 
    
         | 
    
        data/ext/unpack.h
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
     | 
    
         
            -
             * MessagePack unpacking routine 
     | 
| 
      
 2 
     | 
    
         
            +
             * MessagePack for Ruby unpacking routine
         
     | 
| 
       3 
3 
     | 
    
         
             
             *
         
     | 
| 
       4 
     | 
    
         
            -
             * Copyright (C) 2008 FURUHASHI Sadayuki
         
     | 
| 
      
 4 
     | 
    
         
            +
             * Copyright (C) 2008-2009 FURUHASHI Sadayuki
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             *    Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
       7 
7 
     | 
    
         
             
             *    you may not use this file except in compliance with the License.
         
     | 
    
        data/ext/unpack.o
    CHANGED
    
    | 
         Binary file 
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: msgpack
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: mswin32
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - FURUHASHI Sadayuki
         
     | 
| 
         @@ -9,7 +9,7 @@ autorequire: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2009-03-04 00:00:00 +09:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
         @@ -22,8 +22,6 @@ extensions: [] 
     | 
|
| 
       22 
22 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            files: 
         
     | 
| 
       25 
     | 
    
         
            -
            - lib/msgpack
         
     | 
| 
       26 
     | 
    
         
            -
            - lib/msgpack/version.rb
         
     | 
| 
       27 
25 
     | 
    
         
             
            - ext/extconf.rb
         
     | 
| 
       28 
26 
     | 
    
         
             
            - ext/Makefile
         
     | 
| 
       29 
27 
     | 
    
         
             
            - ext/msgpack.so
         
     | 
| 
         @@ -36,7 +34,7 @@ files: 
     | 
|
| 
       36 
34 
     | 
    
         
             
            - ext/unpack.h
         
     | 
| 
       37 
35 
     | 
    
         
             
            - ext/unpack.o
         
     | 
| 
       38 
36 
     | 
    
         
             
            has_rdoc: false
         
     | 
| 
       39 
     | 
    
         
            -
            homepage:  
     | 
| 
      
 37 
     | 
    
         
            +
            homepage: http://msgpack.sourceforge.jp/
         
     | 
| 
       40 
38 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       41 
39 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       42 
40 
     | 
    
         | 
| 
         @@ -57,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       57 
55 
     | 
    
         
             
              version: 
         
     | 
| 
       58 
56 
     | 
    
         
             
            requirements: []
         
     | 
| 
       59 
57 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
            rubyforge_project: 
         
     | 
| 
      
 58 
     | 
    
         
            +
            rubyforge_project: msgpack
         
     | 
| 
       61 
59 
     | 
    
         
             
            rubygems_version: 1.3.1
         
     | 
| 
       62 
60 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       63 
61 
     | 
    
         
             
            specification_version: 2
         
     |