ruby_cddb 0.0.1

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.
data/ext/cddb_conn.h ADDED
@@ -0,0 +1,15 @@
1
+ #ifndef CONN_HEADER
2
+ #define CONN_HEADER
3
+
4
+ #include<ruby.h>
5
+ #include<cddb/cddb.h>
6
+
7
+ extern VALUE cddb_conn_rb;
8
+
9
+ cddb_conn_t *get_cddb_con_from_Value(VALUE self);
10
+
11
+ VALUE makeValueFrom_cddb_conn_t(cddb_conn_t *conn);
12
+
13
+ void init_cddb_conn();
14
+
15
+ #endif
data/ext/cddb_disc.c ADDED
@@ -0,0 +1,302 @@
1
+ #include<ruby.h>
2
+ #include<cddb/cddb.h>
3
+
4
+ #include "cddb_conn.h"
5
+ #include "cddb_disc.h"
6
+ #include "cddb_track.h"
7
+
8
+ #include "usage.h"
9
+
10
+ VALUE cddb_disc_rb;
11
+
12
+ static void crb_disc_free(void *p) {
13
+ cddb_disc_destroy(p);
14
+ decLibUsage();
15
+ }
16
+
17
+ static VALUE crb_to_string(const char* str) {
18
+ if (str)
19
+ return rb_str_new2(str);
20
+ else
21
+ return Qnil;
22
+ }
23
+
24
+ cddb_disc_t *get_cddb_disc_from_Value(VALUE self) {
25
+ cddb_disc_t *disc = NULL;
26
+ Data_Get_Struct(self,cddb_disc_t,disc);
27
+ return disc;
28
+ }
29
+
30
+ VALUE makeValueFrom_cddb_disc_t(cddb_disc_t *disc) {
31
+ VALUE obj=Qnil;
32
+ if (disc) {
33
+ incLibUsage();
34
+ obj=Data_Wrap_Struct(cddb_disc_rb,0,crb_disc_free,disc);
35
+ }
36
+ return obj;
37
+ }
38
+
39
+ VALUE _makeValueFrom_cddb_disc_t(cddb_disc_t *disc) {
40
+ VALUE obj=Qnil;
41
+ if (disc) {
42
+ obj=Data_Wrap_Struct(cddb_disc_rb,0,0,disc);
43
+ }
44
+ return obj;
45
+ }
46
+
47
+
48
+ static VALUE crb_disc_alloc(VALUE klass)
49
+ {
50
+ VALUE obj;
51
+ cddb_disc_t *disc = NULL;
52
+ incLibUsage();
53
+ disc = cddb_disc_new();
54
+ if (disc == NULL) {
55
+ rb_sys_fail("out of memory, "
56
+ "unable to create cddb_disc structure");
57
+ }
58
+ obj=Data_Wrap_Struct(klass,0,crb_disc_free,disc);
59
+ return obj;
60
+ }
61
+
62
+
63
+ static VALUE crb_cddb_disc_clone(VALUE self) {
64
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
65
+ return makeValueFrom_cddb_disc_t(cddb_disc_clone(disc));
66
+ }
67
+
68
+
69
+ static VALUE crb_cddb_disc_add_track(VALUE self,VALUE rtrack) {
70
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
71
+ cddb_track_t *track=get_cddb_track_from_Value(rtrack);
72
+ cddb_disc_add_track(disc,cddb_track_clone(track));
73
+ return self;
74
+ }
75
+
76
+ static VALUE crb_cddb_disc_get_track(VALUE self,VALUE track_no) {
77
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
78
+ cddb_track_t *track=cddb_disc_get_track(disc,NUM2INT(track_no));
79
+ return _makeValueFrom_cddb_track_t(track);
80
+ }
81
+
82
+
83
+ static VALUE crb_cddb_disc_get_track_first(VALUE self) {
84
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
85
+ cddb_track_t *track=cddb_disc_get_track_first(disc);
86
+ return _makeValueFrom_cddb_track_t(track);
87
+ }
88
+
89
+ static VALUE crb_cddb_disc_get_track_next(VALUE self) {
90
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
91
+ cddb_track_t *track=cddb_disc_get_track_next(disc);
92
+ return _makeValueFrom_cddb_track_t(track);
93
+ }
94
+
95
+
96
+ static VALUE crb_cddb_disc_get_discid(VALUE self) {
97
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
98
+ return UINT2NUM(cddb_disc_get_discid(disc));
99
+ }
100
+
101
+ static VALUE crb_cddb_disc_set_discid(VALUE self,VALUE id) {
102
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
103
+ cddb_disc_set_discid(disc,NUM2UINT(id));
104
+ return self;
105
+ }
106
+
107
+
108
+
109
+ static VALUE crb_cddb_disc_get_category_str(VALUE self) {
110
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
111
+ return crb_to_string(cddb_disc_get_category_str(disc));
112
+ }
113
+
114
+ static VALUE crb_cddb_disc_set_category_str(VALUE self,VALUE cat) {
115
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
116
+ cddb_disc_set_category_str(disc,STR2CSTR(cat));
117
+ return self;
118
+ }
119
+
120
+
121
+
122
+ static VALUE crb_cddb_disc_get_genre(VALUE self) {
123
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
124
+ return crb_to_string(cddb_disc_get_category_str(disc));
125
+ }
126
+
127
+ static VALUE crb_cddb_disc_set_genre(VALUE self,VALUE gen) {
128
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
129
+ cddb_disc_set_category_str(disc,STR2CSTR(gen));
130
+ return self;
131
+ }
132
+
133
+
134
+
135
+ static VALUE crb_cddb_disc_get_length(VALUE self) {
136
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
137
+ return INT2NUM(cddb_disc_get_length(disc));
138
+ }
139
+
140
+ static VALUE crb_cddb_disc_set_length(VALUE self,VALUE len) {
141
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
142
+ cddb_disc_set_length(disc,NUM2INT(len));
143
+ return self;
144
+ }
145
+
146
+
147
+ static VALUE crb_cddb_disc_set_length_by_offset(VALUE self,VALUE len) {
148
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
149
+ cddb_disc_set_length(disc,FRAMES_TO_SECONDS(NUM2INT(len)));
150
+ return self;
151
+ }
152
+
153
+
154
+ static VALUE crb_cddb_disc_get_year(VALUE self) {
155
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
156
+ return INT2NUM(cddb_disc_get_year(disc));
157
+ }
158
+
159
+ static VALUE crb_cddb_disc_set_year(VALUE self,VALUE year) {
160
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
161
+ cddb_disc_set_year(disc,NUM2INT(year));
162
+ return self;
163
+ }
164
+
165
+
166
+ static VALUE crb_cddb_disc_get_track_count(VALUE self) {
167
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
168
+ return INT2NUM(cddb_disc_get_track_count(disc));
169
+ }
170
+
171
+
172
+ static VALUE crb_cddb_disc_get_title(VALUE self) {
173
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
174
+ return crb_to_string(cddb_disc_get_title(disc));
175
+ }
176
+
177
+ static VALUE crb_cddb_disc_set_title(VALUE self,VALUE title) {
178
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
179
+ cddb_disc_set_title(disc,STR2CSTR(title));
180
+ return self;
181
+ }
182
+
183
+
184
+ static VALUE crb_cddb_disc_get_artist(VALUE self) {
185
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
186
+ return crb_to_string(cddb_disc_get_artist(disc));
187
+ }
188
+
189
+ static VALUE crb_cddb_disc_set_artist(VALUE self,VALUE artist) {
190
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
191
+ cddb_disc_set_artist(disc,STR2CSTR(artist));
192
+ return self;
193
+ }
194
+
195
+
196
+ static VALUE crb_cddb_disc_get_ext_data(VALUE self) {
197
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
198
+ return crb_to_string(cddb_disc_get_ext_data(disc));
199
+ }
200
+
201
+ static VALUE crb_cddb_disc_set_ext_data(VALUE self,VALUE ext_data) {
202
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
203
+ cddb_disc_set_ext_data(disc,STR2CSTR(ext_data));
204
+ return self;
205
+ }
206
+
207
+
208
+ static VALUE crb_cddb_calc_discid(VALUE self) {
209
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
210
+ cddb_disc_calc_discid(disc);
211
+ return self;
212
+ }
213
+
214
+ static VALUE crb_cddb_print(VALUE self) {
215
+ cddb_disc_t *disc=get_cddb_disc_from_Value(self);
216
+ cddb_disc_print(disc);
217
+ return self;
218
+ }
219
+
220
+
221
+ /* ***************** ******** ********** */
222
+ static VALUE crb_cddb_disc_to_hash(VALUE self) {
223
+ VALUE hash=rb_hash_new();
224
+
225
+ rb_hash_aset(hash, rb_str_new2("disc_id"),
226
+ crb_cddb_disc_get_discid(self));
227
+
228
+ rb_hash_aset(hash, rb_str_new2("title"),
229
+ crb_cddb_disc_get_title(self));
230
+
231
+ rb_hash_aset(hash, rb_str_new2("artist"),
232
+ crb_cddb_disc_get_artist(self));
233
+
234
+ rb_hash_aset(hash, rb_str_new2("category_str"),
235
+ crb_cddb_disc_get_category_str(self));
236
+
237
+ rb_hash_aset(hash, rb_str_new2("genre"),
238
+ crb_cddb_disc_get_genre(self));
239
+
240
+ rb_hash_aset(hash, rb_str_new2("length"),
241
+ crb_cddb_disc_get_length(self));
242
+
243
+ rb_hash_aset(hash, rb_str_new2("year"),
244
+ crb_cddb_disc_get_year(self));
245
+
246
+ rb_hash_aset(hash, rb_str_new2("ext_data"),
247
+ crb_cddb_disc_get_ext_data(self));
248
+
249
+ rb_hash_aset(hash, rb_str_new2("track_count"),
250
+ crb_cddb_disc_get_track_count(self));
251
+
252
+ return hash;
253
+ }
254
+
255
+
256
+
257
+ /* ***************** ******** ********** */
258
+
259
+ static VALUE crb_cddb_disc_copy_from(VALUE self,VALUE source) {
260
+ cddb_disc_t *dst=get_cddb_disc_from_Value(self);
261
+ cddb_disc_t *src=get_cddb_disc_from_Value(source);
262
+ cddb_disc_copy(dst,src);
263
+ return self;
264
+ }
265
+
266
+
267
+
268
+ /* ***************** ******** ********** */
269
+
270
+ #define METHOD(name,method,parCount) \
271
+ rb_define_method(cddb_disc_rb, \
272
+ name,method,parCount)
273
+
274
+ void init_cddb_disc() {
275
+ cddb_disc_rb=rb_define_class("CDDB_Disc",rb_cObject);
276
+ rb_define_alloc_func(cddb_disc_rb,crb_disc_alloc);
277
+ METHOD("clone", crb_cddb_disc_clone,1);
278
+ METHOD("add_track",crb_cddb_disc_add_track,1);
279
+ METHOD("track",crb_cddb_disc_get_track,1);
280
+ METHOD("track_first", crb_cddb_disc_get_track_first,0);
281
+ METHOD("track_next", crb_cddb_disc_get_track_next,0);
282
+ METHOD("discid" , crb_cddb_disc_get_discid,0);
283
+ METHOD("discid=", crb_cddb_disc_set_discid,1);
284
+ METHOD("category_str" , crb_cddb_disc_get_category_str,0);
285
+ METHOD("category_str=", crb_cddb_disc_set_category_str,1);
286
+ METHOD("genre" , crb_cddb_disc_get_genre,0);
287
+ METHOD("genre=", crb_cddb_disc_set_genre,1);
288
+ METHOD("length" , crb_cddb_disc_get_length,0);
289
+ METHOD("length=", crb_cddb_disc_set_length,1);
290
+ METHOD("last_frame_offset=", crb_cddb_disc_set_length_by_offset,1);
291
+ METHOD("year" , crb_cddb_disc_get_year,0);
292
+ METHOD("year=", crb_cddb_disc_set_year,1);
293
+ METHOD("track_count" , crb_cddb_disc_get_track_count,0);
294
+ METHOD("title" , crb_cddb_disc_get_title,0);
295
+ METHOD("title=", crb_cddb_disc_set_title,1);
296
+ METHOD("ext_data" , crb_cddb_disc_get_ext_data,0);
297
+ METHOD("ext_data=", crb_cddb_disc_set_ext_data,1);
298
+ METHOD("copy_from", crb_cddb_disc_copy_from,1);
299
+ METHOD("calc_discid", crb_cddb_calc_discid,0);
300
+ METHOD("to_hash" , crb_cddb_disc_to_hash,0);
301
+ METHOD("print", crb_cddb_print,0);
302
+ }
data/ext/cddb_disc.h ADDED
@@ -0,0 +1,16 @@
1
+ #ifndef DISC_HEADER
2
+ #define DISC_HEADER
3
+
4
+ #include<ruby.h>
5
+ #include<cddb/cddb.h>
6
+
7
+
8
+ extern VALUE cddb_disc_rbclass;
9
+
10
+ cddb_disc_t *get_cddb_disc_from_Value(VALUE self);
11
+
12
+ VALUE makeValueFrom_cddb_disc_t(cddb_disc_t *disc);
13
+
14
+ void init_cddb_disc();
15
+
16
+ #endif
data/ext/cddb_mod.c ADDED
@@ -0,0 +1,78 @@
1
+ #include<ruby.h>
2
+ #include<cddb/cddb.h>
3
+
4
+
5
+ VALUE cddb_mod_rb;
6
+
7
+ /** **/
8
+ static VALUE crb_cddb_set_log_level(VALUE self,VALUE serverport) {
9
+ cddb_log_set_level(NUM2INT(serverport));
10
+ return self;
11
+ }
12
+
13
+
14
+ static VALUE crb_cddb_frame2sec(VALUE self,VALUE frames) {
15
+ return INT2NUM(FRAMES_TO_SECONDS(NUM2INT(frames)));
16
+ }
17
+
18
+ static VALUE crb_cddb_sec2frame(VALUE self,VALUE frames) {
19
+ return INT2NUM(TO_SECONDS_TO_FRAMES(NUM2INT(frames)));
20
+ }
21
+
22
+ static VALUE crb_cddb_searchcat(VALUE self,VALUE cat) {
23
+ return INT2NUM(SEARCHCAT(NUM2INT(cat)));
24
+ }
25
+
26
+ /** **/
27
+ #define METHOD(name,method,parCount) \
28
+ rb_define_module_function(cddb_mod_rb, \
29
+ name,method,parCount)
30
+
31
+ #define CONST(name,value) \
32
+ rb_define_const(cddb_mod_rb, \
33
+ name,value)
34
+
35
+ void init_cddb_mod() {
36
+ cddb_mod_rb=rb_define_module("Rb_CDDB");
37
+
38
+ METHOD("log_level=",crb_cddb_set_log_level,1);
39
+ CONST("CAT_DATA" ,INT2NUM(CDDB_CAT_DATA));
40
+ CONST("CAT_FOLK" ,INT2NUM(CDDB_CAT_FOLK));
41
+ CONST("CAT_JAZZ" ,INT2NUM(CDDB_CAT_JAZZ));
42
+ CONST("CAT_MISC" ,INT2NUM(CDDB_CAT_MISC));
43
+ CONST("CAT_ROCK" ,INT2NUM(CDDB_CAT_ROCK));
44
+ CONST("CAT_COUNTRY",INT2NUM(CDDB_CAT_COUNTRY));
45
+ CONST("CAT_BLUES" ,INT2NUM(CDDB_CAT_BLUES));
46
+ CONST("CAT_NEWAGE" ,INT2NUM(CDDB_CAT_NEWAGE));
47
+ CONST("CAT_REGGAE" ,INT2NUM(CDDB_CAT_REGGAE));
48
+ CONST("CAT_CLASSICAL" ,INT2NUM(CDDB_CAT_CLASSICAL));
49
+ CONST("CAT_SOUNDTRACK" ,INT2NUM(CDDB_CAT_SOUNDTRACK));
50
+ CONST("CAT_INVALID" ,INT2NUM(CDDB_CAT_INVALID));
51
+ CONST("CAT_LAST" ,INT2NUM(CDDB_CAT_LAST));
52
+
53
+
54
+ CONST("LOG_DEBUG" ,INT2NUM(CDDB_LOG_DEBUG));
55
+ CONST("LOG_INFO" ,INT2NUM(CDDB_LOG_INFO));
56
+ CONST("LOG_WARN" ,INT2NUM(CDDB_LOG_WARN));
57
+ CONST("LOG_ERROR" ,INT2NUM(CDDB_LOG_ERROR));
58
+ CONST("LOG_CRITICAL",INT2NUM(CDDB_LOG_CRITICAL));
59
+ CONST("LOG_NONE" ,INT2NUM(CDDB_LOG_NONE));
60
+
61
+ CONST("CACHE_OFF" ,INT2NUM(CACHE_OFF));
62
+ CONST("CACHE_ON" ,INT2NUM(CACHE_ON));
63
+ CONST("CACHE_ONLY" ,INT2NUM(CACHE_ONLY));
64
+
65
+ CONST("SEARCH_NONE" ,INT2NUM(SEARCH_NONE));
66
+ CONST("SEARCH_ARTIST" ,INT2NUM(SEARCH_ARTIST));
67
+ CONST("SEARCH_TITLE" ,INT2NUM(SEARCH_TITLE));
68
+ CONST("SEARCH_TRACK" ,INT2NUM(SEARCH_TRACK));
69
+ CONST("SEARCH_OTHER" ,INT2NUM(SEARCH_OTHER));
70
+ CONST("SEARCH_ALL" ,INT2NUM(SEARCH_ALL));
71
+
72
+
73
+
74
+ rb_define_global_function("frame2sec",crb_cddb_frame2sec,1);
75
+ rb_define_global_function("sec2frame",crb_cddb_sec2frame,1);
76
+ rb_define_global_function("searchcat",crb_cddb_searchcat,1);
77
+
78
+ }
data/ext/cddb_mod.h ADDED
@@ -0,0 +1,11 @@
1
+ #ifndef CONN_HEADER
2
+ #define CONN_HEADER
3
+
4
+ #include<ruby.h>
5
+ #include<cddb/cddb.h>
6
+
7
+ extern VALUE cddb_mod_rb;
8
+
9
+ void init_cddb_mod();
10
+
11
+ #endif
data/ext/cddb_rb.c ADDED
@@ -0,0 +1,15 @@
1
+ #include<ruby.h>
2
+
3
+ #include "cddb_mod.h"
4
+ #include "cddb_conn.h"
5
+ #include "cddb_disc.h"
6
+ #include "cddb_track.h"
7
+ #include "cddb_mod.h"
8
+
9
+ void Init_rbcddb() {
10
+ init_cddb_conn();
11
+ init_cddb_disc();
12
+ init_cddb_track();
13
+ init_cddb_mod();
14
+
15
+ }
data/ext/cddb_track.c ADDED
@@ -0,0 +1,203 @@
1
+ #include<ruby.h>
2
+ #include<cddb/cddb.h>
3
+
4
+ #include "cddb_conn.h"
5
+ #include "cddb_disc.h"
6
+ #include "cddb_track.h"
7
+
8
+ #include "usage.h"
9
+
10
+ VALUE cddb_track_rb;
11
+
12
+ static void crb_track_free(void *p) {
13
+ cddb_track_destroy(p);
14
+ decLibUsage();
15
+ }
16
+
17
+ static VALUE crb_to_string(const char* str) {
18
+ if (str)
19
+ return rb_str_new2(str);
20
+ else
21
+ return Qnil;
22
+ }
23
+
24
+ cddb_track_t *get_cddb_track_from_Value(VALUE self) {
25
+ cddb_track_t *track = NULL;
26
+ Data_Get_Struct(self,cddb_track_t,track);
27
+ return track;
28
+ }
29
+
30
+ VALUE makeValueFrom_cddb_track_t(cddb_track_t *track) {
31
+ VALUE obj=Qnil;
32
+ if (track) {
33
+ incLibUsage();
34
+ obj=Data_Wrap_Struct(cddb_track_rb,0,crb_track_free,track);
35
+ }
36
+ return obj;
37
+ }
38
+
39
+ VALUE _makeValueFrom_cddb_track_t(cddb_track_t *track) {
40
+ VALUE obj=Qnil;
41
+ if (track) {
42
+ obj=Data_Wrap_Struct(cddb_track_rb,0,0,track);
43
+ }
44
+ return obj;
45
+ }
46
+
47
+
48
+
49
+ static VALUE crb_track_alloc(VALUE klass)
50
+ {
51
+ VALUE obj;
52
+ cddb_track_t *track = NULL;
53
+ incLibUsage();
54
+ track = cddb_track_new();
55
+ if (track == NULL) {
56
+ rb_sys_fail("out of memory, "
57
+ "unable to create cddb_track structure");
58
+ }
59
+ obj=Data_Wrap_Struct(klass,0,crb_track_free,track);
60
+ return obj;
61
+ }
62
+
63
+
64
+ static VALUE crb_cddb_track_clone(VALUE self) {
65
+ cddb_track_t *track=get_cddb_track_from_Value(self);
66
+ return makeValueFrom_cddb_track_t(cddb_track_clone(track));
67
+ }
68
+
69
+
70
+ static VALUE crb_cddb_track_get_number(VALUE self) {
71
+ cddb_track_t *track=get_cddb_track_from_Value(self);
72
+ return INT2FIX(cddb_track_get_number(track));
73
+ }
74
+
75
+ static VALUE crb_cddb_track_get_frame_offset(VALUE self) {
76
+ cddb_track_t *track=get_cddb_track_from_Value(self);
77
+ return INT2NUM(cddb_track_get_frame_offset(track));
78
+ }
79
+
80
+ static VALUE crb_cddb_track_set_frame_offset(VALUE self,VALUE offset) {
81
+ cddb_track_t *track=get_cddb_track_from_Value(self);
82
+ cddb_track_set_frame_offset(track,NUM2INT(offset));
83
+ return self;
84
+ }
85
+
86
+ static VALUE crb_cddb_track_get_length(VALUE self) {
87
+ cddb_track_t *track=get_cddb_track_from_Value(self);
88
+ return INT2NUM(cddb_track_get_length(track));
89
+ }
90
+
91
+ static VALUE crb_cddb_track_set_length(VALUE self,VALUE length) {
92
+ cddb_track_t *track=get_cddb_track_from_Value(self);
93
+ cddb_track_set_length(track,NUM2INT(length));
94
+ return self;
95
+ }
96
+
97
+
98
+ static VALUE crb_cddb_track_get_title(VALUE self) {
99
+ cddb_track_t *track=get_cddb_track_from_Value(self);
100
+ return crb_to_string(cddb_track_get_title(track));
101
+ }
102
+
103
+ static VALUE crb_cddb_track_set_title(VALUE self,VALUE title) {
104
+ cddb_track_t *track=get_cddb_track_from_Value(self);
105
+ cddb_track_set_title(track,STR2CSTR(title));
106
+ return self;
107
+ }
108
+
109
+
110
+ static VALUE crb_cddb_track_get_artist(VALUE self) {
111
+ cddb_track_t *track=get_cddb_track_from_Value(self);
112
+ return crb_to_string(cddb_track_get_artist(track));
113
+ }
114
+
115
+ static VALUE crb_cddb_track_set_artist(VALUE self,VALUE artist) {
116
+ cddb_track_t *track=get_cddb_track_from_Value(self);
117
+ cddb_track_set_artist(track,STR2CSTR(artist));
118
+ return self;
119
+ }
120
+
121
+
122
+ static VALUE crb_cddb_track_get_ext_data(VALUE self) {
123
+ cddb_track_t *track=get_cddb_track_from_Value(self);
124
+ return crb_to_string(cddb_track_get_ext_data(track));
125
+ }
126
+
127
+ static VALUE crb_cddb_track_set_ext_data(VALUE self,VALUE ext_data) {
128
+ cddb_track_t *track=get_cddb_track_from_Value(self);
129
+ cddb_track_set_ext_data(track,STR2CSTR(ext_data));
130
+ return self;
131
+ }
132
+
133
+ static VALUE crb_cddb_track_print(VALUE self) {
134
+ cddb_track_t *track=get_cddb_track_from_Value(self);
135
+ cddb_track_print(track);
136
+ return self;
137
+ }
138
+
139
+
140
+
141
+ /* ***************** ******** ********** */
142
+ static VALUE crb_cddb_track_copy_from(VALUE self,VALUE source) {
143
+ cddb_track_t *src=get_cddb_track_from_Value(source);
144
+ cddb_track_t *dst=get_cddb_track_from_Value(self);
145
+ cddb_track_copy(dst,src);
146
+ return self;
147
+ }
148
+
149
+
150
+ /* ***************** ******** ********** */
151
+
152
+ static VALUE crb_cddb_track_to_hash(VALUE self) {
153
+ VALUE hash=rb_hash_new();
154
+
155
+ rb_hash_aset(hash, rb_str_new2("title"),
156
+ crb_cddb_track_get_title(self));
157
+
158
+ rb_hash_aset(hash, rb_str_new2("artist"),
159
+ crb_cddb_track_get_artist(self));
160
+
161
+ rb_hash_aset(hash, rb_str_new2("length"),
162
+ crb_cddb_track_get_length(self));
163
+
164
+ rb_hash_aset(hash, rb_str_new2("frame_offset"),
165
+ crb_cddb_track_get_frame_offset(self));
166
+
167
+ rb_hash_aset(hash, rb_str_new2("number"),
168
+ crb_cddb_track_get_number(self));
169
+
170
+ rb_hash_aset(hash, rb_str_new2("ext_data"),
171
+ crb_cddb_track_get_ext_data(self));
172
+
173
+ return hash;
174
+ }
175
+
176
+
177
+
178
+ /* ***************** ******** ********** */
179
+
180
+ #define METHOD(name,method,parCount) \
181
+ rb_define_method(cddb_track_rb, \
182
+ name,method,parCount)
183
+
184
+ void init_cddb_track() {
185
+ cddb_track_rb=rb_define_class("CDDB_Track",rb_cObject);
186
+ rb_define_alloc_func(cddb_track_rb,crb_track_alloc);
187
+ METHOD("clone" ,crb_cddb_track_clone ,1);
188
+ METHOD("number" ,crb_cddb_track_get_number ,0);
189
+ METHOD("frame_offset",crb_cddb_track_get_frame_offset,0);
190
+ METHOD("frame_offset=",crb_cddb_track_set_frame_offset,1);
191
+ METHOD("length",crb_cddb_track_get_length,0);
192
+ METHOD("length=",crb_cddb_track_set_length,1);
193
+ METHOD("title",crb_cddb_track_get_title,0);
194
+ METHOD("title=",crb_cddb_track_set_title,1);
195
+ METHOD("artist",crb_cddb_track_get_artist,0);
196
+ METHOD("artist=",crb_cddb_track_set_artist,1);
197
+ METHOD("ext_data",crb_cddb_track_get_ext_data,0);
198
+ METHOD("ext_data=",crb_cddb_track_set_ext_data,1);
199
+ METHOD("copy_from",crb_cddb_track_copy_from,1);
200
+ METHOD("to_hash",crb_cddb_track_to_hash,0);
201
+ METHOD("print",crb_cddb_track_print,0);
202
+
203
+ }