Class: Puzzle
- Inherits:
-
Object
- Object
- Puzzle
- Defined in:
- lib/puzzle/version.rb,
ext/libpuzzle.c
Defined Under Namespace
Classes: Error
Constant Summary collapse
- VERSION =
'1.0.2'
Instance Attribute Summary collapse
- #vector ⇒ Object readonly
Class Method Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#vector ⇒ Object (readonly)
Class Method Details
.new(file_path) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'ext/libpuzzle.c', line 17 static VALUE new(VALUE klass, VALUE file_path){ Puzzle *puzzle; VALUE ret = Data_Make_Struct(klass, Puzzle, 0, free_puzzle, puzzle); puzzle_init_context(&puzzle->context); puzzle_init_cvec(&puzzle->context, &puzzle->vector); if(puzzle_fill_cvec_from_file(&puzzle->context, &puzzle->vector, StringValueCStr(file_path)) < 0) rb_raise(rb_eError, "failed to open file"); VALUE rb_vector = rb_str_new((const char*)puzzle->vector.vec, puzzle->vector.sizeof_vec); rb_iv_set(ret, "@vector", rb_vector); return ret; } |
.uncompress(compressed_string) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'ext/libpuzzle.c', line 61 static VALUE uncompress(VALUE klass, VALUE compressed_string){ Puzzle *puzzle; PuzzleCompressedCvec c_cvec; VALUE ret = Data_Make_Struct(klass, Puzzle, 0, free_puzzle, puzzle); puzzle_init_context(&puzzle->context); puzzle_init_cvec(&puzzle->context, &puzzle->vector); c_cvec.vec = (unsigned char*)RSTRING_PTR(compressed_string); c_cvec.sizeof_compressed_vec = RSTRING_LEN(compressed_string); puzzle_uncompress_cvec(&puzzle->context, &c_cvec, &puzzle->vector); VALUE rb_vector = rb_str_new((const char*)puzzle->vector.vec, puzzle->vector.sizeof_vec); rb_iv_set(ret, "@vector", rb_vector); return ret; } |
Instance Method Details
#==(p2) ⇒ Object
45 46 47 |
# File 'ext/libpuzzle.c', line 45 static VALUE equal(VALUE p1, VALUE p2){ return _distance(p1, p2) < 0.6 ? Qtrue : Qfalse; } |
#compress ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 |
# File 'ext/libpuzzle.c', line 49 static VALUE compress(VALUE self){ Puzzle *puzzle; PuzzleCompressedCvec c_cvec; Data_Get_Struct(self, Puzzle, puzzle); puzzle_init_compressed_cvec(&puzzle->context, &c_cvec); puzzle_compress_cvec(&puzzle->context, &c_cvec, &puzzle->vector); VALUE ret = rb_str_new((const char*)c_cvec.vec, c_cvec.sizeof_compressed_vec); puzzle_free_compressed_cvec(&puzzle->context, &c_cvec); return ret; } |
#distance(p2) ⇒ Object
41 42 43 |
# File 'ext/libpuzzle.c', line 41 static VALUE distance(VALUE p1, VALUE p2){ return rb_float_new(_distance(p1, p2)); } |