htslib 0.0.5 → 0.0.10

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.
@@ -0,0 +1,297 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HTS
4
+ module LibHTS
5
+
6
+ =begin
7
+
8
+ attach_function \
9
+ :cram_fd_get_header,
10
+ [CramFd],
11
+ SamHdr.by_ref
12
+
13
+ attach_function \
14
+ :cram_fd_set_header,
15
+ [CramFd, SamHdr.by_ref],
16
+ :void
17
+
18
+ attach_function \
19
+ :cram_fd_get_version,
20
+ [CramFd],
21
+ :int
22
+
23
+ attach_function \
24
+ :cram_fd_set_version,
25
+ [CramFd, :int],
26
+ :void
27
+
28
+ attach_function \
29
+ :cram_major_vers,
30
+ [CramFd],
31
+ :int
32
+
33
+ attach_function \
34
+ :cram_minor_vers,
35
+ [CramFd],
36
+ :int
37
+
38
+ attach_function \
39
+ :cram_fd_get_fp,
40
+ [CramFd],
41
+ HFile.by_ref
42
+
43
+ attach_function \
44
+ :cram_fd_set_fp,
45
+ [CramFd, HFile],
46
+ :void
47
+
48
+ attach_function \
49
+ :cram_container_get_length,
50
+ [CramContainer],
51
+ :int32
52
+
53
+ attach_function \
54
+ :cram_container_set_length,
55
+ [CramContainer, :int32],
56
+ :void
57
+
58
+ attach_function \
59
+ :cram_container_get_num_blocks,
60
+ [CramContainer],
61
+ :int32
62
+
63
+ attach_function \
64
+ :cram_container_set_num_blocks,
65
+ [CramContainer, :int32],
66
+ :void
67
+
68
+ attach_function \
69
+ :cram_container_get_landmarks,
70
+ [CramContainer, :int32],
71
+ :pointer
72
+
73
+ attach_function \
74
+ :cram_container_set_landmarks,
75
+ [CramContainer, :Int32, :pointer],
76
+ :void
77
+
78
+ attach_function \
79
+ :cram_container_is_empty,
80
+ [CramFd],
81
+ :int
82
+
83
+ attach_function \
84
+ :cram_block_get_content_id,
85
+ [CramBlock],
86
+ :int32
87
+
88
+ attach_function \
89
+ :cram_block_get_comp_size,
90
+ [CramBlock],
91
+ :int32
92
+
93
+ attach_function \
94
+ :cram_block_get_uncomp_size,
95
+ [CramBlock],
96
+ :int32
97
+
98
+ attach_function \
99
+ :cram_block_get_crc32,
100
+ [CramBlock],
101
+ :int32
102
+
103
+ attach_function \
104
+ :cram_block_get_data,
105
+ [CramBlock],
106
+ :pointer
107
+
108
+ attach_function \
109
+ :cram_block_get_content_type,
110
+ [CramBlock],
111
+ CramContentType # ?
112
+
113
+ attach_function \
114
+ :cram_block_set_content_id,
115
+ [CramBlock, :int32],
116
+ :void
117
+
118
+ attach_function \
119
+ :cram_block_set_comp_size,
120
+ [CramBlock, :int32],
121
+ :void
122
+
123
+ attach_function \
124
+ :cram_block_set_uncomp_size,
125
+ [CramBlock, :int32],
126
+ :void
127
+
128
+ attach_function \
129
+ :cram_block_set_crc32,
130
+ [CramBlock, :int32],
131
+ :void
132
+
133
+ attach_function \
134
+ :cram_block_set_data,
135
+ [CramBlock, :pointer],
136
+ :void
137
+
138
+ attach_function \
139
+ :cram_block_append,
140
+ [CramBlock, :pointer, :int],
141
+ :int
142
+
143
+ attach_function \
144
+ :cram_block_update_size,
145
+ [CramBlock],
146
+ :void
147
+
148
+ attach_function \
149
+ :cram_block_get_offset,
150
+ [CramBlock],
151
+ :size_t
152
+
153
+ attach_function \
154
+ :cram_block_set_offset,
155
+ [CramBlock, :size_t],
156
+ :void
157
+
158
+ attach_function \
159
+ :cram_block_size,
160
+ [CramBlock],
161
+ :uint32
162
+
163
+ attach_function \
164
+ :cram_transcode_rg,
165
+ [CramFd, CramFd, CramContainer, :int, :pointer, :pointer],
166
+ :int
167
+
168
+ attach_function \
169
+ :cram_copy_slice,
170
+ [CramFd, CramFd, :int32],
171
+ :int
172
+
173
+ attach_function \
174
+ :cram_new_block,
175
+ [CramContentType, :int],
176
+ CramBlock
177
+
178
+ attach_function \
179
+ :cram_read_block,
180
+ [CramFd],
181
+ CramBlock
182
+
183
+ attach_function \
184
+ :cram_write_block,
185
+ [CramFd, CramBlock],
186
+ :int
187
+
188
+ attach_function \
189
+ :cram_free_block,
190
+ [CramBlock],
191
+ :void
192
+
193
+ attach_function \
194
+ :cram_uncompress_block,
195
+ [CramBlock],
196
+ :int
197
+
198
+ attach_function \
199
+ :cram_compress_block,
200
+ [CramFd, CramBlock, CramMetrics, :int, :int],
201
+ :int
202
+
203
+ attach_function \
204
+ :cram_compress_block2,
205
+ [CramFd, CramSlice, CramBlock, CramMetrics, :int, :int],
206
+ :int
207
+
208
+ attach_function \
209
+ :cram_new_container,
210
+ [:int, :int],
211
+ CramContainer
212
+
213
+ attach_function \
214
+ :cram_free_container,
215
+ [CramContainer],
216
+ :void
217
+
218
+ attach_function \
219
+ :cram_read_container,
220
+ [CramFd],
221
+ CramContainer
222
+
223
+ attach_function \
224
+ :cram_write_container,
225
+ [CramFd, CramContainer],
226
+ :int
227
+
228
+ attach_function \
229
+ :cram_store_container,
230
+ [CramFd, CramContainer, :string, :pointer],
231
+ :int
232
+
233
+ attach_function \
234
+ :cram_container_size,
235
+ [CramContainer],
236
+ :int
237
+
238
+ attach_function \
239
+ :cram_open,
240
+ [:string, :string],
241
+ CramFd
242
+
243
+ attach_function \
244
+ :cram_dopen,
245
+ [:pointer, :string, :string],
246
+ CramFd
247
+
248
+ attach_function \
249
+ :cram_close,
250
+ [CramFd],
251
+ :int
252
+
253
+ =end
254
+
255
+ attach_function \
256
+ :cram_seek,
257
+ [:pointer, :off_t, :int], :int # FIXME pointer should be CramFd
258
+
259
+ =begin
260
+
261
+ attach_function \
262
+ :cram_flush,
263
+ [CramFd],
264
+ :int
265
+
266
+ attach_function \
267
+ :cram_eof,
268
+ [CramFd],
269
+ :int
270
+
271
+ attach_function \
272
+ :cram_set_option,
273
+ [CramFd, HtsFmtOption, ...], # vararg!
274
+ :int
275
+
276
+ attach_function \
277
+ :cram_set_voption,
278
+ [CramFd, HtsFmtOption, VaList],
279
+ :int
280
+
281
+ attach_function \
282
+ :cram_set_header,
283
+ [CramFd, SamHdr.by_ref],
284
+ :int
285
+
286
+ attach_function \
287
+ :cram_check_eof = :cram_check_EOF,
288
+ [CramFd], :int
289
+
290
+ attach_function \
291
+ :cram_get_refs,
292
+ [HtsFile],
293
+ RefsT # what is RefsT
294
+
295
+ =end
296
+ end
297
+ end
@@ -6,13 +6,13 @@ module HTS
6
6
  attach_function \
7
7
  :hopen,
8
8
  %i[string string varargs],
9
- :HFILE
9
+ HFILE.by_ref
10
10
 
11
11
  # Associate a stream with an existing open file descriptor
12
12
  attach_function \
13
13
  :hdopen,
14
14
  %i[int string],
15
- :HFILE
15
+ HFILE.by_ref
16
16
 
17
17
  # Report whether the file name or URL denotes remote storage
18
18
  attach_function \
@@ -29,55 +29,63 @@ module HTS
29
29
  # Flush (for output streams) and close the stream
30
30
  attach_function \
31
31
  :hclose,
32
- [:HFILE],
32
+ [HFILE],
33
33
  :int
34
34
 
35
35
  # Close the stream, without flushing or propagating errors
36
36
  attach_function \
37
37
  :hclose_abruptly,
38
- [:HFILE],
38
+ [HFILE],
39
39
  :void
40
40
 
41
41
  # Reposition the read/write stream offset
42
42
  attach_function \
43
43
  :hseek,
44
- %i[HFILE off_t int],
44
+ [HFILE, :off_t, :int],
45
45
  :off_t
46
46
 
47
+ # Report the current stream offset
48
+ def self.htell(fp)
49
+ # TODO: This is a hack. Is this OK?
50
+ bg = FFI::Pointer.new(:int, fp.pointer.address + fp.offset_of(:begin)).read_int
51
+ bf = FFI::Pointer.new(:int, fp.pointer.address + fp.offset_of(:buffer)).read_int
52
+ fp[:offset] + (bg - bf)
53
+ end
54
+
47
55
  # Read from the stream until the delimiter, up to a maximum length
48
56
  attach_function \
49
57
  :hgetdelim,
50
- %i[string size_t int HFILE],
58
+ [:string, :size_t, :int, HFILE],
51
59
  :ssize_t
52
60
 
53
61
  # Read a line from the stream, up to a maximum length
54
62
  attach_function \
55
63
  :hgets,
56
- %i[string int HFILE],
64
+ [:string, :int, HFILE],
57
65
  :string
58
66
 
59
67
  # Peek at characters to be read without removing them from buffers
60
68
  attach_function \
61
69
  :hpeek,
62
- %i[HFILE pointer size_t],
70
+ [HFILE, :pointer, :size_t],
63
71
  :ssize_t
64
72
 
65
73
  # For writing streams, flush buffered output to the underlying stream
66
74
  attach_function \
67
75
  :hflush,
68
- [:HFILE],
76
+ [HFILE],
69
77
  :int
70
78
 
71
79
  # For hfile_mem: get the internal buffer and it's size from a hfile
72
80
  attach_function \
73
81
  :hfile_mem_get_buffer,
74
- %i[HFILE pointer],
82
+ [HFILE, :pointer],
75
83
  :string
76
84
 
77
85
  # For hfile_mem: get the internal buffer and it's size from a hfile.
78
86
  attach_function \
79
87
  :hfile_mem_steal_buffer,
80
- %i[HFILE pointer],
88
+ [HFILE, :pointer],
81
89
  :string
82
90
  end
83
91
  end
@@ -61,7 +61,7 @@ module HTS
61
61
  # Determine format by peeking at the start of a file
62
62
  attach_function \
63
63
  :hts_detect_format,
64
- [:HFILE, HtsFormat],
64
+ [HFILE, HtsFormat],
65
65
  :int
66
66
 
67
67
  # Get a human-readable description of the file format
@@ -86,9 +86,15 @@ module HTS
86
86
  # Open an existing stream as a SAM/BAM/CRAM/VCF/BCF/etc file
87
87
  attach_function \
88
88
  :hts_hopen,
89
- %i[HFILE string string],
89
+ [HFILE, :string, :string],
90
90
  HtsFile.by_ref
91
91
 
92
+ # For output streams, flush any buffered data
93
+ attach_function \
94
+ :hts_flush,
95
+ [HtsFile],
96
+ :int
97
+
92
98
  # Close a file handle, flushing buffered data for output streams
93
99
  attach_function \
94
100
  :hts_close,
@@ -139,7 +145,7 @@ module HTS
139
145
  # Create extra threads to aid compress/decompression for this file
140
146
  attach_function \
141
147
  :hts_set_thread_pool,
142
- [HtsFile, HtsThreadPool],
148
+ [HtsFile, HtsTpool],
143
149
  :int
144
150
 
145
151
  # Adds a cache of decompressed blocks, potentially speeding up seeks.