Module: FFTW3::Wisdom

Defined in:
lib/fftw3/wisdom.rb

Class Method Summary collapse

Class Method Details

.export_to_file(filename, precision: :double) ⇒ Object



5
6
7
8
9
# File 'lib/fftw3/wisdom.rb', line 5

def self.export_to_file(filename, precision: :double)
  ffi = FFTW3::FFI.module_for(precision)
  pfx = FFTW3::FFI.prefix_for(precision)
  ffi.send(:"#{pfx}export_wisdom_to_filename", filename) != 0
end

.export_to_io(io, precision: :double) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/fftw3/wisdom.rb', line 22

def self.export_to_io(io, precision: :double)
  ffi = FFTW3::FFI.module_for(precision)
  pfx = FFTW3::FFI.prefix_for(precision)
  writer = proc do |char, _data|
    io.write(callback_char_to_string(char))
  end

  ffi.send(:"#{pfx}export_wisdom", writer, nil)
  io
end

.export_to_string(precision: :double) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/fftw3/wisdom.rb', line 11

def self.export_to_string(precision: :double)
  ffi = FFTW3::FFI.module_for(precision)
  pfx = FFTW3::FFI.prefix_for(precision)
  ptr = ffi.send(:"#{pfx}export_wisdom_to_string")
  return nil if ptr.null?

  str = ptr.read_string
  ffi.send(:"#{pfx}free", ptr)
  str
end

.forget!(precision: :double) ⇒ Object



58
59
60
61
62
# File 'lib/fftw3/wisdom.rb', line 58

def self.forget!(precision: :double)
  ffi = FFTW3::FFI.module_for(precision)
  pfx = FFTW3::FFI.prefix_for(precision)
  ffi.send(:"#{pfx}forget_wisdom")
end

.import_from_file(filename, precision: :double) ⇒ Object



33
34
35
36
37
# File 'lib/fftw3/wisdom.rb', line 33

def self.import_from_file(filename, precision: :double)
  ffi = FFTW3::FFI.module_for(precision)
  pfx = FFTW3::FFI.prefix_for(precision)
  ffi.send(:"#{pfx}import_wisdom_from_filename", filename) != 0
end

.import_from_io(io, precision: :double) ⇒ Object



45
46
47
48
49
50
# File 'lib/fftw3/wisdom.rb', line 45

def self.import_from_io(io, precision: :double)
  ffi = FFTW3::FFI.module_for(precision)
  pfx = FFTW3::FFI.prefix_for(precision)
  reader = build_reader(io)
  ffi.send(:"#{pfx}import_wisdom", reader, nil) != 0
end

.import_from_string(str, precision: :double) ⇒ Object



39
40
41
42
43
# File 'lib/fftw3/wisdom.rb', line 39

def self.import_from_string(str, precision: :double)
  ffi = FFTW3::FFI.module_for(precision)
  pfx = FFTW3::FFI.prefix_for(precision)
  ffi.send(:"#{pfx}import_wisdom_from_string", str) != 0
end

.import_system(precision: :double) ⇒ Object



52
53
54
55
56
# File 'lib/fftw3/wisdom.rb', line 52

def self.import_system(precision: :double)
  ffi = FFTW3::FFI.module_for(precision)
  pfx = FFTW3::FFI.prefix_for(precision)
  ffi.send(:"#{pfx}import_system_wisdom") != 0
end