Class: Mspack::ChmDecompressor::File

Inherits:
Object
  • Object
show all
Defined in:
lib/mspack/chm_decompressor.rb,
ext/mspack_native/chm_decompressor_file.c

Instance Method Summary collapse

Instance Method Details

#fast_find?Boolean

Returns:

  • (Boolean)


55
56
57
58
59
# File 'ext/mspack_native/chm_decompressor_file.c', line 55

VALUE chmd_file_is_fast_find(VALUE self) {
  struct chmd_file_wrapper *wrapper;
  Data_Get_Struct(self, struct chmd_file_wrapper, wrapper);
  return wrapper->is_fast_find ? Qtrue : Qfalse;
}

#filenameObject



20
21
22
23
24
25
26
27
28
29
# File 'ext/mspack_native/chm_decompressor_file.c', line 20

VALUE chmd_file_filename(VALUE self) {
  struct chmd_file_wrapper *wrapper;
  Data_Get_Struct(self, struct chmd_file_wrapper, wrapper);

  if (!wrapper->file->filename) {
    return Qnil;
  }

  return rb_str_new2(wrapper->file->filename);
}

#lengthObject



49
50
51
52
53
# File 'ext/mspack_native/chm_decompressor_file.c', line 49

VALUE chmd_file_length(VALUE self) {
  struct chmd_file_wrapper *wrapper;
  Data_Get_Struct(self, struct chmd_file_wrapper, wrapper);
  return LONG2FIX(wrapper->file->length);
}

#nextObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'ext/mspack_native/chm_decompressor_file.c', line 31

VALUE chmd_file_next(VALUE self) {
  struct chmd_file_wrapper *wrapper;
  Data_Get_Struct(self, struct chmd_file_wrapper, wrapper);
  struct mschmd_file *next = wrapper->file->next;

  if (!next) {
    return Qnil;
  }

  struct chmd_file_wrapper *next_wrapper = 
    malloc(sizeof(struct chmd_file_wrapper));
    
  next_wrapper->is_fast_find = 0;
  next_wrapper->file = next;

  return Data_Wrap_Struct(ChmDFile, NULL, chmd_file_free, next_wrapper);
}