asciipack 0.2.1 → 0.2.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1691b37fbd3296bc64c616a4e4df2b4cd6889a07
4
- data.tar.gz: a5e015148d90c132932e3fbed05c6379ce6f28ce
3
+ metadata.gz: 99e8c97fe92ccf81fcf5f3a6d769b9a0bc7fff80
4
+ data.tar.gz: 37fe12bd66fc3ddb09637c544148dfd0102eec7d
5
5
  SHA512:
6
- metadata.gz: 06ce558462f2af4a6c07422a912bb78bcb65220e3ea49570ec317e997f98375258ec288fc099ca3531271432d901eb4cc7a429c6f6d58244386809997f2f8709
7
- data.tar.gz: ecb62c4e1f7e0e79db03569de77649a67c35338de4db391f091455cf93cdd8c7c8fe7a65669e6b06d489a53de3d85bc41d2f9c175910a2f98473d4b219a740b2
6
+ metadata.gz: b9df66b102da5d7724c8a9022a0005e634bfa2d018f981a64eeb01346a96f1120bc5c2536ea993c9a3abb301bb9ea75f31a6a224de3b78d2e331d96ffee8fa10
7
+ data.tar.gz: b88a190b4a8be5b532e884540769e4ab6da395e7a0259e9f2246bbb73d22e3a1554fdac982e3a77cb16d74007445d95b8adb858322dcbe83cc3247cbcdf23ec8
data/.gitignore CHANGED
@@ -1,7 +1,8 @@
1
1
  *.gem
2
2
  *.rbc
3
- .bundle
4
3
  *.bundle
4
+ *.so
5
+ .bundle
5
6
  .config
6
7
  .yardoc
7
8
  Gemfile.lock
@@ -46,18 +46,12 @@ Packer_realloc (packer_t* ptr, size_t require)
46
46
  size_t newsize = ptr->memsize;
47
47
  size_t len = ptr->ch - ptr->buffer;
48
48
  size_t require_size = require + len;
49
- char* mem = NULL;
50
- char* p;
51
49
 
52
50
  while (newsize < require_size) {
53
51
  newsize *= 2;
54
52
  }
55
53
 
56
- mem = realloc(ptr->buffer, newsize);
57
- if (mem == NULL) {
58
- return NULL;
59
- }
60
- ptr->buffer = mem;
54
+ ptr->buffer = realloc(ptr->buffer, sizeof(char) * newsize);
61
55
  ptr->ch = ptr->buffer + len;
62
56
  ptr->memsize = newsize;
63
57
  return ptr->buffer;
@@ -258,7 +252,7 @@ Packer_float (packer_t* ptr, VALUE floatnum)
258
252
  uint64_t u64;
259
253
  } converter = {float64};
260
254
 
261
- Packer_check(ptr, 9);
255
+ Packer_check(ptr, 17);
262
256
  Packer_write_buffer_1(ptr, 'l');
263
257
  Packer_write_uint64(ptr, converter.u64);
264
258
  }
@@ -268,21 +262,20 @@ Packer_str (packer_t* ptr, VALUE string)
268
262
  {
269
263
  uint32_t len = RSTRING_LEN(string);
270
264
  char* p = RSTRING_PTR(string);
271
- uint8_t n = 0;
272
265
 
273
266
  if (len < 0x10) {
274
267
  Packer_check(ptr, 1);
275
268
  Packer_write_buffer_1(ptr, 'G' + len);
276
269
  } else if (len < 0x100) {
277
- Packer_check(ptr, 1);
270
+ Packer_check(ptr, 3);
278
271
  Packer_write_buffer_1(ptr, 'n');
279
272
  Packer_write_positive_num(ptr, len, 2);
280
273
  } else if (len < 0x10000) {
281
- Packer_check(ptr, 1);
274
+ Packer_check(ptr, 5);
282
275
  Packer_write_buffer_1(ptr, 'o');
283
276
  Packer_write_positive_num(ptr, len, 4);
284
277
  } else {
285
- Packer_check(ptr, 1);
278
+ Packer_check(ptr, 9);
286
279
  Packer_write_buffer_1(ptr, 'p');
287
280
  Packer_write_positive_num(ptr, len, 8);
288
281
  }
@@ -336,7 +329,6 @@ static void
336
329
  Packer_map (packer_t* ptr, VALUE hash)
337
330
  {
338
331
  uint32_t len = RHASH_SIZE(hash);
339
- uint32_t i = 0;
340
332
 
341
333
  if (len < 0x10) {
342
334
  Packer_check(ptr, 2);
@@ -363,12 +355,14 @@ Packer_map (packer_t* ptr, VALUE hash)
363
355
  static VALUE
364
356
  Packer_pack (VALUE self, VALUE obj)
365
357
  {
358
+ VALUE str;
359
+
366
360
  PACKER(self, ptr);
367
361
 
368
362
  Packer_write(ptr, obj);
369
363
 
370
364
  *ptr->ch = '\0';
371
- VALUE str = rb_str_new2(ptr->buffer);
365
+ str = rb_str_new(ptr->buffer, ptr->ch - ptr->buffer);
372
366
  free(ptr->buffer);
373
367
  return str;
374
368
  }
@@ -1,3 +1,3 @@
1
1
  module AsciiPack
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/spec/mem_spec.rb ADDED
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ here = File.dirname(File.expand_path(__FILE__))
6
+
7
+ describe AsciiPack do
8
+ it "num" do
9
+ obj = [0,0xf,0xff,0xffff,0xffffffff,0xffffffffffffffff,-1,-0x80,-0x8000,-0x80000000,-0x8000000000000000,0.1,1.0000000000000002,-0.1,0.0,1/3,Float::INFINITY]
10
+ obj = obj * 1000
11
+ ap = AsciiPack.pack(obj)
12
+ expect(AsciiPack.unpack(ap)).to eq(obj)
13
+ end
14
+ end
15
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciipack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ksss
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-27 00:00:00.000000000 Z
11
+ date: 2013-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -89,6 +89,7 @@ files:
89
89
  - lib/asciipack/version.rb
90
90
  - spec/bench.rb
91
91
  - spec/format_spec.rb
92
+ - spec/mem_spec.rb
92
93
  - spec/spec_helper.rb
93
94
  homepage: http://ksss.github.io/AsciiPack
94
95
  licenses:
@@ -117,5 +118,6 @@ summary: AsciiPack is an object serialization inspired by MessagePack.
117
118
  test_files:
118
119
  - spec/bench.rb
119
120
  - spec/format_spec.rb
121
+ - spec/mem_spec.rb
120
122
  - spec/spec_helper.rb
121
123
  has_rdoc: