taglib-ruby 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +33 -0
- data/.yardopts +1 -1
- data/{CHANGES.md → CHANGELOG.md} +35 -14
- data/Gemfile +2 -0
- data/Guardfile +4 -2
- data/README.md +56 -38
- data/Rakefile +8 -8
- data/docs/taglib/aiff.rb +0 -3
- data/docs/taglib/base.rb +0 -4
- data/docs/taglib/flac.rb +1 -3
- data/docs/taglib/id3v2.rb +1 -1
- data/docs/taglib/mp4.rb +2 -4
- data/docs/taglib/mpeg.rb +0 -1
- data/docs/taglib/ogg.rb +0 -4
- data/docs/taglib/vorbis.rb +0 -1
- data/docs/taglib/wav.rb +0 -4
- data/ext/extconf_common.rb +24 -28
- data/ext/taglib_aiff/extconf.rb +2 -0
- data/ext/taglib_aiff/taglib_aiff_wrap.cxx +217 -178
- data/ext/taglib_base/extconf.rb +2 -0
- data/ext/taglib_base/includes.i +25 -0
- data/ext/taglib_base/taglib_base.i +18 -0
- data/ext/taglib_base/taglib_base_wrap.cxx +233 -191
- data/ext/taglib_flac/extconf.rb +2 -0
- data/ext/taglib_flac/taglib_flac.i +7 -0
- data/ext/taglib_flac/taglib_flac_wrap.cxx +235 -189
- data/ext/taglib_flac_picture/extconf.rb +2 -0
- data/ext/taglib_flac_picture/taglib_flac_picture_wrap.cxx +210 -168
- data/ext/taglib_id3v1/extconf.rb +2 -0
- data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +223 -182
- data/ext/taglib_id3v2/extconf.rb +2 -0
- data/ext/taglib_id3v2/taglib_id3v2.i +17 -0
- data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +2922 -993
- data/ext/taglib_mp4/extconf.rb +2 -0
- data/ext/taglib_mp4/taglib_mp4_wrap.cxx +295 -260
- data/ext/taglib_mpeg/extconf.rb +2 -0
- data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +243 -206
- data/ext/taglib_ogg/extconf.rb +2 -0
- data/ext/taglib_ogg/taglib_ogg_wrap.cxx +214 -171
- data/ext/taglib_vorbis/extconf.rb +2 -0
- data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +217 -178
- data/ext/taglib_wav/extconf.rb +2 -0
- data/ext/taglib_wav/taglib_wav_wrap.cxx +217 -178
- data/lib/taglib/aiff.rb +2 -0
- data/lib/taglib/base.rb +3 -1
- data/lib/taglib/flac.rb +2 -0
- data/lib/taglib/id3v1.rb +2 -0
- data/lib/taglib/id3v2.rb +2 -0
- data/lib/taglib/mp4.rb +10 -13
- data/lib/taglib/mpeg.rb +2 -0
- data/lib/taglib/ogg.rb +2 -0
- data/lib/taglib/version.rb +4 -2
- data/lib/taglib/vorbis.rb +2 -0
- data/lib/taglib/wav.rb +2 -1
- data/lib/taglib.rb +4 -3
- data/taglib-ruby.gemspec +165 -162
- data/tasks/docs_coverage.rake +10 -8
- data/tasks/ext.rake +26 -25
- data/tasks/gemspec_check.rake +7 -5
- data/tasks/swig.rake +10 -11
- data/test/aiff_examples_test.rb +8 -13
- data/test/aiff_file_test.rb +29 -29
- data/test/aiff_file_write_test.rb +19 -20
- data/test/base_test.rb +4 -2
- data/test/data/add-relative-volume.cpp +7 -3
- data/test/data/flac-create.cpp +15 -5
- data/test/data/flac_nopic.flac +0 -0
- data/test/data/get_picture_data.cpp +5 -1
- data/test/data/id3v1-create.cpp +6 -3
- data/test/data/mp4-create.cpp +12 -4
- data/test/data/vorbis-create.cpp +12 -5
- data/test/data/wav-create.cpp +18 -3
- data/test/file_test.rb +7 -5
- data/test/fileref_open_test.rb +12 -10
- data/test/fileref_properties_test.rb +6 -4
- data/test/fileref_write_test.rb +14 -13
- data/test/flac_file_test.rb +32 -27
- data/test/flac_file_write_test.rb +17 -18
- data/test/flac_picture_memory_test.rb +39 -0
- data/test/helper.rb +3 -1
- data/test/id3v1_genres_test.rb +14 -12
- data/test/id3v1_tag_test.rb +7 -5
- data/test/id3v2_frames_test.rb +98 -34
- data/test/id3v2_header_test.rb +14 -13
- data/test/id3v2_memory_test.rb +21 -20
- data/test/id3v2_relative_volume_test.rb +11 -9
- data/test/id3v2_tag_test.rb +16 -14
- data/test/id3v2_unicode_test.rb +12 -10
- data/test/id3v2_unknown_frames_test.rb +7 -5
- data/test/id3v2_write_test.rb +28 -29
- data/test/mp4_file_test.rb +27 -26
- data/test/mp4_file_write_test.rb +12 -13
- data/test/mp4_items_test.rb +78 -79
- data/test/mpeg_file_test.rb +32 -30
- data/test/tag_test.rb +5 -3
- data/test/unicode_filename_test.rb +7 -7
- data/test/vorbis_file_test.rb +14 -12
- data/test/vorbis_tag_test.rb +46 -44
- data/test/wav_examples_test.rb +8 -16
- data/test/wav_file_test.rb +29 -29
- data/test/wav_file_write_test.rb +22 -23
- metadata +26 -23
@@ -1,6 +1,6 @@
|
|
1
1
|
/* ----------------------------------------------------------------------------
|
2
2
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
3
|
-
* Version
|
3
|
+
* Version 4.0.2
|
4
4
|
*
|
5
5
|
* This file is not intended to be easily readable and contains a number of
|
6
6
|
* coding conventions designed to improve portability and efficiency. Do not make
|
@@ -8,7 +8,11 @@
|
|
8
8
|
* interface file instead.
|
9
9
|
* ----------------------------------------------------------------------------- */
|
10
10
|
|
11
|
+
|
12
|
+
#ifndef SWIGRUBY
|
11
13
|
#define SWIGRUBY
|
14
|
+
#endif
|
15
|
+
|
12
16
|
|
13
17
|
|
14
18
|
#ifdef __cplusplus
|
@@ -101,9 +105,11 @@ template <typename T> T SwigValueInit() {
|
|
101
105
|
#endif
|
102
106
|
|
103
107
|
/* exporting methods */
|
104
|
-
#if (__GNUC__
|
105
|
-
#
|
106
|
-
#
|
108
|
+
#if defined(__GNUC__)
|
109
|
+
# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
110
|
+
# ifndef GCC_HASCLASSVISIBILITY
|
111
|
+
# define GCC_HASCLASSVISIBILITY
|
112
|
+
# endif
|
107
113
|
# endif
|
108
114
|
#endif
|
109
115
|
|
@@ -223,9 +229,11 @@ template <typename T> T SwigValueInit() {
|
|
223
229
|
#endif
|
224
230
|
|
225
231
|
/* exporting methods */
|
226
|
-
#if (__GNUC__
|
227
|
-
#
|
228
|
-
#
|
232
|
+
#if defined(__GNUC__)
|
233
|
+
# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
234
|
+
# ifndef GCC_HASCLASSVISIBILITY
|
235
|
+
# define GCC_HASCLASSVISIBILITY
|
236
|
+
# endif
|
229
237
|
# endif
|
230
238
|
#endif
|
231
239
|
|
@@ -323,6 +331,7 @@ template <typename T> T SwigValueInit() {
|
|
323
331
|
/* Flags for pointer conversions */
|
324
332
|
#define SWIG_POINTER_DISOWN 0x1
|
325
333
|
#define SWIG_CAST_NEW_MEMORY 0x2
|
334
|
+
#define SWIG_POINTER_NO_NULL 0x4
|
326
335
|
|
327
336
|
/* Flags for new pointer objects */
|
328
337
|
#define SWIG_POINTER_OWN 0x1
|
@@ -775,16 +784,16 @@ SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
|
|
775
784
|
char d = *(c++);
|
776
785
|
unsigned char uu;
|
777
786
|
if ((d >= '0') && (d <= '9'))
|
778
|
-
uu = ((d - '0') << 4);
|
787
|
+
uu = (unsigned char)((d - '0') << 4);
|
779
788
|
else if ((d >= 'a') && (d <= 'f'))
|
780
|
-
uu = ((d - ('a'-10)) << 4);
|
789
|
+
uu = (unsigned char)((d - ('a'-10)) << 4);
|
781
790
|
else
|
782
791
|
return (char *) 0;
|
783
792
|
d = *(c++);
|
784
793
|
if ((d >= '0') && (d <= '9'))
|
785
|
-
uu |= (d - '0');
|
794
|
+
uu |= (unsigned char)(d - '0');
|
786
795
|
else if ((d >= 'a') && (d <= 'f'))
|
787
|
-
uu |= (d - ('a'-10));
|
796
|
+
uu |= (unsigned char)(d - ('a'-10));
|
788
797
|
else
|
789
798
|
return (char *) 0;
|
790
799
|
*u = uu;
|
@@ -961,42 +970,53 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
|
|
961
970
|
#ifndef RSTRUCT_PTR
|
962
971
|
# define RSTRUCT_PTR(x) RSTRUCT(x)->ptr
|
963
972
|
#endif
|
973
|
+
#ifndef RTYPEDDATA_P
|
974
|
+
# define RTYPEDDATA_P(x) (TYPE(x) != T_DATA)
|
975
|
+
#endif
|
964
976
|
|
965
977
|
|
966
978
|
|
967
979
|
/*
|
968
|
-
*
|
969
|
-
*
|
980
|
+
* The following macros are used for providing the correct type of a
|
981
|
+
* function pointer to the Ruby C API.
|
982
|
+
* Starting with Ruby 2.7 (corresponding to RB_METHOD_DEFINITION_DECL being
|
983
|
+
* defined) these macros act transparently due to Ruby's moving away from
|
984
|
+
* ANYARGS and instead employing strict function signatures.
|
970
985
|
*
|
971
|
-
*
|
972
|
-
*
|
973
|
-
*
|
986
|
+
* Note: In case of C (not C++) the macros are transparent even before
|
987
|
+
* Ruby 2.7 due to the fact that the Ruby C API used function declarators
|
988
|
+
* with empty parentheses, which allows for an unspecified number of
|
989
|
+
* arguments.
|
974
990
|
*
|
975
|
-
*
|
976
|
-
*
|
977
|
-
*
|
991
|
+
* PROTECTFUNC(f) is used for the function pointer argument of the Ruby
|
992
|
+
* C API function rb_protect().
|
993
|
+
*
|
994
|
+
* VALUEFUNC(f) is used for the function pointer argument(s) of Ruby C API
|
995
|
+
* functions like rb_define_method() and rb_define_singleton_method().
|
996
|
+
*
|
997
|
+
* VOIDFUNC(f) is used to typecast a C function that implements either
|
998
|
+
* the "mark" or "free" stuff for a Ruby Data object, so that it can be
|
999
|
+
* passed as an argument to Ruby C API functions like Data_Wrap_Struct()
|
978
1000
|
* and Data_Make_Struct().
|
1001
|
+
*
|
1002
|
+
* SWIG_RUBY_VOID_ANYARGS_FUNC(f) is used for the function pointer
|
1003
|
+
* argument(s) of Ruby C API functions like rb_define_virtual_variable().
|
1004
|
+
*
|
1005
|
+
* SWIG_RUBY_INT_ANYARGS_FUNC(f) is used for the function pointer
|
1006
|
+
* argument(s) of Ruby C API functions like st_foreach().
|
979
1007
|
*/
|
980
|
-
|
981
|
-
#
|
982
|
-
#
|
983
|
-
#
|
984
|
-
#
|
985
|
-
#
|
986
|
-
# else
|
987
|
-
# ifndef ANYARGS /* These definitions should work for Ruby 1.6 */
|
988
|
-
# define PROTECTFUNC(f) ((VALUE (*)()) f)
|
989
|
-
# define VALUEFUNC(f) ((VALUE (*)()) f)
|
990
|
-
# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f)
|
991
|
-
# else /* These definitions should work for Ruby 1.7+ */
|
992
|
-
# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f)
|
993
|
-
# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f)
|
994
|
-
# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f)
|
995
|
-
# endif
|
996
|
-
# endif
|
1008
|
+
#if defined(__cplusplus) && !defined(RB_METHOD_DEFINITION_DECL)
|
1009
|
+
# define PROTECTFUNC(f) ((VALUE (*)(VALUE)) f)
|
1010
|
+
# define VALUEFUNC(f) ((VALUE (*)(ANYARGS)) f)
|
1011
|
+
# define VOIDFUNC(f) ((RUBY_DATA_FUNC) f)
|
1012
|
+
# define SWIG_RUBY_VOID_ANYARGS_FUNC(f) ((void (*)(ANYARGS))(f))
|
1013
|
+
# define SWIG_RUBY_INT_ANYARGS_FUNC(f) ((int (*)(ANYARGS))(f))
|
997
1014
|
#else
|
1015
|
+
# define PROTECTFUNC(f) (f)
|
998
1016
|
# define VALUEFUNC(f) (f)
|
999
1017
|
# define VOIDFUNC(f) (f)
|
1018
|
+
# define SWIG_RUBY_VOID_ANYARGS_FUNC(f) (f)
|
1019
|
+
# define SWIG_RUBY_INT_ANYARGS_FUNC(f) (f)
|
1000
1020
|
#endif
|
1001
1021
|
|
1002
1022
|
/* Don't use for expressions have side effect */
|
@@ -1184,7 +1204,7 @@ void Ruby_Format_OverloadedError(
|
|
1184
1204
|
/* -----------------------------------------------------------------------------
|
1185
1205
|
* rubytracking.swg
|
1186
1206
|
*
|
1187
|
-
* This file contains support for tracking mappings from
|
1207
|
+
* This file contains support for tracking mappings from
|
1188
1208
|
* Ruby objects to C++ objects. This functionality is needed
|
1189
1209
|
* to implement mark functions for Ruby's mark and sweep
|
1190
1210
|
* garbage collector.
|
@@ -1194,6 +1214,11 @@ void Ruby_Format_OverloadedError(
|
|
1194
1214
|
extern "C" {
|
1195
1215
|
#endif
|
1196
1216
|
|
1217
|
+
#if !defined(ST_DATA_T_DEFINED)
|
1218
|
+
/* Needs to be explicitly included for Ruby 1.8 and earlier */
|
1219
|
+
#include <st.h>
|
1220
|
+
#endif
|
1221
|
+
|
1197
1222
|
/* Ruby 1.8 actually assumes the first case. */
|
1198
1223
|
#if SIZEOF_VOIDP == SIZEOF_LONG
|
1199
1224
|
# define SWIG2NUM(v) LONG2NUM((unsigned long)v)
|
@@ -1205,109 +1230,69 @@ extern "C" {
|
|
1205
1230
|
# error sizeof(void*) is not the same as long or long long
|
1206
1231
|
#endif
|
1207
1232
|
|
1208
|
-
|
1209
|
-
|
1210
|
-
structs to Ruby Objects.
|
1233
|
+
/* Global hash table to store Trackings from C/C++
|
1234
|
+
structs to Ruby Objects.
|
1211
1235
|
*/
|
1212
|
-
static
|
1236
|
+
static st_table* swig_ruby_trackings = NULL;
|
1237
|
+
|
1238
|
+
static VALUE swig_ruby_trackings_count(ID id, VALUE *var) {
|
1239
|
+
return SWIG2NUM(swig_ruby_trackings->num_entries);
|
1240
|
+
}
|
1213
1241
|
|
1214
|
-
/* Global variable that stores a reference to the ruby
|
1215
|
-
hash table delete function. */
|
1216
|
-
static ID swig_ruby_hash_delete;
|
1217
1242
|
|
1218
|
-
/* Setup a
|
1243
|
+
/* Setup a hash table to store Trackings */
|
1219
1244
|
SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
|
1220
|
-
/* Create a
|
1245
|
+
/* Create a hash table to store Trackings from C++
|
1221
1246
|
objects to Ruby objects. */
|
1222
1247
|
|
1223
|
-
/* Try to see if some other .so has already created a
|
1248
|
+
/* Try to see if some other .so has already created a
|
1224
1249
|
tracking hash table, which we keep hidden in an instance var
|
1225
1250
|
in the SWIG module.
|
1226
1251
|
This is done to allow multiple DSOs to share the same
|
1227
1252
|
tracking table.
|
1228
1253
|
*/
|
1229
|
-
|
1254
|
+
VALUE trackings_value = Qnil;
|
1255
|
+
/* change the variable name so that we can mix modules
|
1256
|
+
compiled with older SWIG's - this used to be called "@__trackings__" */
|
1257
|
+
ID trackings_id = rb_intern( "@__safetrackings__" );
|
1230
1258
|
VALUE verbose = rb_gv_get("VERBOSE");
|
1231
1259
|
rb_gv_set("VERBOSE", Qfalse);
|
1232
|
-
|
1260
|
+
trackings_value = rb_ivar_get( _mSWIG, trackings_id );
|
1233
1261
|
rb_gv_set("VERBOSE", verbose);
|
1234
1262
|
|
1235
|
-
/*
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
}
|
1246
|
-
|
1247
|
-
/* Get a Ruby number to reference a pointer */
|
1248
|
-
SWIGRUNTIME VALUE SWIG_RubyPtrToReference(void* ptr) {
|
1249
|
-
/* We cast the pointer to an unsigned long
|
1250
|
-
and then store a reference to it using
|
1251
|
-
a Ruby number object. */
|
1252
|
-
|
1253
|
-
/* Convert the pointer to a Ruby number */
|
1254
|
-
return SWIG2NUM(ptr);
|
1255
|
-
}
|
1256
|
-
|
1257
|
-
/* Get a Ruby number to reference an object */
|
1258
|
-
SWIGRUNTIME VALUE SWIG_RubyObjectToReference(VALUE object) {
|
1259
|
-
/* We cast the object to an unsigned long
|
1260
|
-
and then store a reference to it using
|
1261
|
-
a Ruby number object. */
|
1262
|
-
|
1263
|
-
/* Convert the Object to a Ruby number */
|
1264
|
-
return SWIG2NUM(object);
|
1265
|
-
}
|
1266
|
-
|
1267
|
-
/* Get a Ruby object from a previously stored reference */
|
1268
|
-
SWIGRUNTIME VALUE SWIG_RubyReferenceToObject(VALUE reference) {
|
1269
|
-
/* The provided Ruby number object is a reference
|
1270
|
-
to the Ruby object we want.*/
|
1263
|
+
/* The trick here is that we have to store the hash table
|
1264
|
+
pointer in a Ruby variable. We do not want Ruby's GC to
|
1265
|
+
treat this pointer as a Ruby object, so we convert it to
|
1266
|
+
a Ruby numeric value. */
|
1267
|
+
if (trackings_value == Qnil) {
|
1268
|
+
/* No, it hasn't. Create one ourselves */
|
1269
|
+
swig_ruby_trackings = st_init_numtable();
|
1270
|
+
rb_ivar_set( _mSWIG, trackings_id, SWIG2NUM(swig_ruby_trackings) );
|
1271
|
+
} else {
|
1272
|
+
swig_ruby_trackings = (st_table*)NUM2SWIG(trackings_value);
|
1273
|
+
}
|
1271
1274
|
|
1272
|
-
|
1273
|
-
|
1275
|
+
rb_define_virtual_variable("SWIG_TRACKINGS_COUNT",
|
1276
|
+
VALUEFUNC(swig_ruby_trackings_count),
|
1277
|
+
SWIG_RUBY_VOID_ANYARGS_FUNC((rb_gvar_setter_t*)NULL));
|
1274
1278
|
}
|
1275
1279
|
|
1276
1280
|
/* Add a Tracking from a C/C++ struct to a Ruby object */
|
1277
1281
|
SWIGRUNTIME void SWIG_RubyAddTracking(void* ptr, VALUE object) {
|
1278
|
-
/* In a Ruby hash table we store the pointer and
|
1279
|
-
the associated Ruby object. The trick here is
|
1280
|
-
that we cannot store the Ruby object directly - if
|
1281
|
-
we do then it cannot be garbage collected. So
|
1282
|
-
instead we typecast it as a unsigned long and
|
1283
|
-
convert it to a Ruby number object.*/
|
1284
|
-
|
1285
|
-
/* Get a reference to the pointer as a Ruby number */
|
1286
|
-
VALUE key = SWIG_RubyPtrToReference(ptr);
|
1287
|
-
|
1288
|
-
/* Get a reference to the Ruby object as a Ruby number */
|
1289
|
-
VALUE value = SWIG_RubyObjectToReference(object);
|
1290
|
-
|
1291
1282
|
/* Store the mapping to the global hash table. */
|
1292
|
-
|
1283
|
+
st_insert(swig_ruby_trackings, (st_data_t)ptr, object);
|
1293
1284
|
}
|
1294
1285
|
|
1295
1286
|
/* Get the Ruby object that owns the specified C/C++ struct */
|
1296
1287
|
SWIGRUNTIME VALUE SWIG_RubyInstanceFor(void* ptr) {
|
1297
|
-
/* Get a reference to the pointer as a Ruby number */
|
1298
|
-
VALUE key = SWIG_RubyPtrToReference(ptr);
|
1299
|
-
|
1300
1288
|
/* Now lookup the value stored in the global hash table */
|
1301
|
-
VALUE value
|
1302
|
-
|
1303
|
-
if (
|
1304
|
-
|
1289
|
+
VALUE value;
|
1290
|
+
|
1291
|
+
if (st_lookup(swig_ruby_trackings, (st_data_t)ptr, &value)) {
|
1292
|
+
return value;
|
1293
|
+
} else {
|
1305
1294
|
return Qnil;
|
1306
1295
|
}
|
1307
|
-
else {
|
1308
|
-
/* Convert this value to Ruby object */
|
1309
|
-
return SWIG_RubyReferenceToObject(value);
|
1310
|
-
}
|
1311
1296
|
}
|
1312
1297
|
|
1313
1298
|
/* Remove a Tracking from a C/C++ struct to a Ruby object. It
|
@@ -1315,25 +1300,39 @@ SWIGRUNTIME VALUE SWIG_RubyInstanceFor(void* ptr) {
|
|
1315
1300
|
since the same memory address may be reused later to create
|
1316
1301
|
a new object. */
|
1317
1302
|
SWIGRUNTIME void SWIG_RubyRemoveTracking(void* ptr) {
|
1318
|
-
/*
|
1319
|
-
|
1320
|
-
|
1321
|
-
/* Delete the object from the hash table by calling Ruby's
|
1322
|
-
do this we need to call the Hash.delete method.*/
|
1323
|
-
rb_funcall(swig_ruby_trackings, swig_ruby_hash_delete, 1, key);
|
1303
|
+
/* Delete the object from the hash table */
|
1304
|
+
st_delete(swig_ruby_trackings, (st_data_t *)&ptr, NULL);
|
1324
1305
|
}
|
1325
1306
|
|
1326
1307
|
/* This is a helper method that unlinks a Ruby object from its
|
1327
1308
|
underlying C++ object. This is needed if the lifetime of the
|
1328
|
-
Ruby object is longer than the C++ object */
|
1309
|
+
Ruby object is longer than the C++ object. */
|
1329
1310
|
SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) {
|
1330
1311
|
VALUE object = SWIG_RubyInstanceFor(ptr);
|
1331
1312
|
|
1332
1313
|
if (object != Qnil) {
|
1314
|
+
// object might have the T_ZOMBIE type, but that's just
|
1315
|
+
// because the GC has flagged it as such for a deferred
|
1316
|
+
// destruction. Until then, it's still a T_DATA object.
|
1333
1317
|
DATA_PTR(object) = 0;
|
1334
1318
|
}
|
1335
1319
|
}
|
1336
1320
|
|
1321
|
+
/* This is a helper method that iterates over all the trackings
|
1322
|
+
passing the C++ object pointer and its related Ruby object
|
1323
|
+
to the passed callback function. */
|
1324
|
+
|
1325
|
+
/* Proxy method to abstract the internal trackings datatype */
|
1326
|
+
static int swig_ruby_internal_iterate_callback(st_data_t ptr, st_data_t obj, st_data_t meth) {
|
1327
|
+
((void (*) (void *, VALUE))meth)((void *)ptr, (VALUE)obj);
|
1328
|
+
return ST_CONTINUE;
|
1329
|
+
}
|
1330
|
+
|
1331
|
+
SWIGRUNTIME void SWIG_RubyIterateTrackings( void(*meth)(void* ptr, VALUE obj) ) {
|
1332
|
+
st_foreach(swig_ruby_trackings,
|
1333
|
+
SWIG_RUBY_INT_ANYARGS_FUNC(swig_ruby_internal_iterate_callback),
|
1334
|
+
(st_data_t)meth);
|
1335
|
+
}
|
1337
1336
|
|
1338
1337
|
#ifdef __cplusplus
|
1339
1338
|
}
|
@@ -1392,7 +1391,7 @@ SWIG_Ruby_AppendOutput(VALUE target, VALUE o) {
|
|
1392
1391
|
#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Ruby_ConvertPtrAndOwn(obj, pptr, type, flags, own)
|
1393
1392
|
#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Ruby_NewPointerObj(ptr, type, flags)
|
1394
1393
|
#define SWIG_AcquirePtr(ptr, own) SWIG_Ruby_AcquirePtr(ptr, own)
|
1395
|
-
#define swig_owntype
|
1394
|
+
#define swig_owntype swig_ruby_owntype
|
1396
1395
|
|
1397
1396
|
/* for raw packed data */
|
1398
1397
|
#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Ruby_ConvertPacked(obj, ptr, sz, ty, flags)
|
@@ -1549,10 +1548,11 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
|
|
1549
1548
|
swig_class *sklass;
|
1550
1549
|
VALUE klass;
|
1551
1550
|
VALUE obj;
|
1552
|
-
|
1551
|
+
|
1553
1552
|
if (!ptr)
|
1554
1553
|
return Qnil;
|
1555
|
-
|
1554
|
+
|
1555
|
+
assert(type);
|
1556
1556
|
if (type->clientdata) {
|
1557
1557
|
sklass = (swig_class *) type->clientdata;
|
1558
1558
|
|
@@ -1560,7 +1560,7 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
|
|
1560
1560
|
track = sklass->trackObjects;
|
1561
1561
|
if (track) {
|
1562
1562
|
obj = SWIG_RubyInstanceFor(ptr);
|
1563
|
-
|
1563
|
+
|
1564
1564
|
/* Check the object's type and make sure it has the correct type.
|
1565
1565
|
It might not in cases where methods do things like
|
1566
1566
|
downcast methods. */
|
@@ -1592,7 +1592,7 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
|
|
1592
1592
|
obj = Data_Wrap_Struct(klass, 0, 0, ptr);
|
1593
1593
|
}
|
1594
1594
|
rb_iv_set(obj, "@__swigtype__", rb_str_new2(type->name));
|
1595
|
-
|
1595
|
+
|
1596
1596
|
return obj;
|
1597
1597
|
}
|
1598
1598
|
|
@@ -1612,26 +1612,30 @@ SWIGRUNTIMEINLINE char *
|
|
1612
1612
|
SWIG_Ruby_MangleStr(VALUE obj)
|
1613
1613
|
{
|
1614
1614
|
VALUE stype = rb_iv_get(obj, "@__swigtype__");
|
1615
|
+
if (NIL_P(stype))
|
1616
|
+
return NULL;
|
1615
1617
|
return StringValuePtr(stype);
|
1616
1618
|
}
|
1617
1619
|
|
1618
1620
|
/* Acquire a pointer value */
|
1619
|
-
typedef
|
1620
|
-
|
1621
|
-
|
1622
|
-
|
1623
|
-
|
1624
|
-
|
1625
|
-
|
1626
|
-
|
1627
|
-
|
1628
|
-
|
1621
|
+
typedef struct {
|
1622
|
+
void (*datafree)(void *);
|
1623
|
+
int own;
|
1624
|
+
} swig_ruby_owntype;
|
1625
|
+
|
1626
|
+
SWIGRUNTIME swig_ruby_owntype
|
1627
|
+
SWIG_Ruby_AcquirePtr(VALUE obj, swig_ruby_owntype own) {
|
1628
|
+
swig_ruby_owntype oldown = {0, 0};
|
1629
|
+
if (TYPE(obj) == T_DATA && !RTYPEDDATA_P(obj)) {
|
1630
|
+
oldown.datafree = RDATA(obj)->dfree;
|
1631
|
+
RDATA(obj)->dfree = own.datafree;
|
1629
1632
|
}
|
1633
|
+
return oldown;
|
1630
1634
|
}
|
1631
1635
|
|
1632
1636
|
/* Convert a pointer value */
|
1633
1637
|
SWIGRUNTIME int
|
1634
|
-
SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
|
1638
|
+
SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags, swig_ruby_owntype *own)
|
1635
1639
|
{
|
1636
1640
|
char *c;
|
1637
1641
|
swig_cast_info *tc;
|
@@ -1639,16 +1643,20 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
|
|
1639
1643
|
|
1640
1644
|
/* Grab the pointer */
|
1641
1645
|
if (NIL_P(obj)) {
|
1642
|
-
|
1643
|
-
|
1646
|
+
if (ptr)
|
1647
|
+
*ptr = 0;
|
1648
|
+
return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
|
1644
1649
|
} else {
|
1645
|
-
if (TYPE(obj) != T_DATA) {
|
1650
|
+
if (TYPE(obj) != T_DATA || (TYPE(obj) == T_DATA && RTYPEDDATA_P(obj))) {
|
1646
1651
|
return SWIG_ERROR;
|
1647
1652
|
}
|
1648
1653
|
Data_Get_Struct(obj, void, vptr);
|
1649
1654
|
}
|
1650
1655
|
|
1651
|
-
if (own)
|
1656
|
+
if (own) {
|
1657
|
+
own->datafree = RDATA(obj)->dfree;
|
1658
|
+
own->own = 0;
|
1659
|
+
}
|
1652
1660
|
|
1653
1661
|
/* Check to see if the input object is giving up ownership
|
1654
1662
|
of the underlying C struct or C++ object. If so then we
|
@@ -1683,8 +1691,6 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
|
|
1683
1691
|
/* The object has already been deleted */
|
1684
1692
|
return SWIG_ObjectPreviouslyDeletedError;
|
1685
1693
|
}
|
1686
|
-
*ptr = vptr;
|
1687
|
-
return SWIG_OK;
|
1688
1694
|
}
|
1689
1695
|
}
|
1690
1696
|
if ((c = SWIG_MangleStr(obj)) == NULL) {
|
@@ -1694,12 +1700,23 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
|
|
1694
1700
|
if (!tc) {
|
1695
1701
|
return SWIG_ERROR;
|
1696
1702
|
} else {
|
1697
|
-
|
1698
|
-
|
1699
|
-
|
1703
|
+
if (ptr) {
|
1704
|
+
if (tc->type == ty) {
|
1705
|
+
*ptr = vptr;
|
1706
|
+
} else {
|
1707
|
+
int newmemory = 0;
|
1708
|
+
*ptr = SWIG_TypeCast(tc, vptr, &newmemory);
|
1709
|
+
if (newmemory == SWIG_CAST_NEW_MEMORY) {
|
1710
|
+
assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
|
1711
|
+
if (own)
|
1712
|
+
own->own = own->own | SWIG_CAST_NEW_MEMORY;
|
1713
|
+
}
|
1714
|
+
}
|
1715
|
+
}
|
1700
1716
|
}
|
1701
1717
|
} else {
|
1702
|
-
|
1718
|
+
if (ptr)
|
1719
|
+
*ptr = vptr;
|
1703
1720
|
}
|
1704
1721
|
|
1705
1722
|
return SWIG_OK;
|
@@ -1725,7 +1742,7 @@ SWIG_Ruby_NewPackedObj(void *ptr, int sz, swig_type_info *type) {
|
|
1725
1742
|
return rb_str_new2(result);
|
1726
1743
|
}
|
1727
1744
|
|
1728
|
-
/* Convert a packed
|
1745
|
+
/* Convert a packed pointer value */
|
1729
1746
|
SWIGRUNTIME int
|
1730
1747
|
SWIG_Ruby_ConvertPacked(VALUE obj, void *ptr, int sz, swig_type_info *ty) {
|
1731
1748
|
swig_cast_info *tc;
|
@@ -1853,7 +1870,7 @@ static VALUE mID3v1;
|
|
1853
1870
|
#define SWIG_RUBY_THREAD_END_BLOCK
|
1854
1871
|
|
1855
1872
|
|
1856
|
-
#define SWIGVERSION
|
1873
|
+
#define SWIGVERSION 0x040002
|
1857
1874
|
#define SWIG_VERSION SWIGVERSION
|
1858
1875
|
|
1859
1876
|
|
@@ -1870,6 +1887,8 @@ static VALUE mID3v1;
|
|
1870
1887
|
|
1871
1888
|
#include <taglib/tstring.h>
|
1872
1889
|
#include <taglib/tstringlist.h>
|
1890
|
+
#include <taglib/tbytevector.h>
|
1891
|
+
#include <taglib/tbytevectorlist.h>
|
1873
1892
|
#include <taglib/tfile.h>
|
1874
1893
|
|
1875
1894
|
#if defined(HAVE_RUBY_ENCODING_H) && HAVE_RUBY_ENCODING_H
|
@@ -1939,6 +1958,28 @@ TagLib::StringList ruby_array_to_taglib_string_list(VALUE ary) {
|
|
1939
1958
|
return result;
|
1940
1959
|
}
|
1941
1960
|
|
1961
|
+
VALUE taglib_bytevectorlist_to_ruby_array(const TagLib::ByteVectorList & list) {
|
1962
|
+
VALUE ary = rb_ary_new2(list.size());
|
1963
|
+
for (TagLib::ByteVectorList::ConstIterator it = list.begin(); it != list.end(); it++) {
|
1964
|
+
VALUE s = taglib_bytevector_to_ruby_string(*it);
|
1965
|
+
rb_ary_push(ary, s);
|
1966
|
+
}
|
1967
|
+
return ary;
|
1968
|
+
}
|
1969
|
+
|
1970
|
+
TagLib::ByteVectorList ruby_array_to_taglib_bytevectorlist(VALUE ary) {
|
1971
|
+
TagLib::ByteVectorList result = TagLib::ByteVectorList();
|
1972
|
+
if (NIL_P(ary)) {
|
1973
|
+
return result;
|
1974
|
+
}
|
1975
|
+
for (long i = 0; i < RARRAY_LEN(ary); i++) {
|
1976
|
+
VALUE e = rb_ary_entry(ary, i);
|
1977
|
+
TagLib::ByteVector s = ruby_string_to_taglib_bytevector(e);
|
1978
|
+
result.append(s);
|
1979
|
+
}
|
1980
|
+
return result;
|
1981
|
+
}
|
1982
|
+
|
1942
1983
|
VALUE taglib_filename_to_ruby_string(TagLib::FileName filename) {
|
1943
1984
|
VALUE result;
|
1944
1985
|
#ifdef _WIN32
|
@@ -2002,7 +2043,7 @@ SWIG_AsCharPtrAndSize(VALUE obj, char** cptr, size_t* psize, int *alloc)
|
|
2002
2043
|
if (cptr) {
|
2003
2044
|
if (alloc) {
|
2004
2045
|
if (*alloc == SWIG_NEWOBJ) {
|
2005
|
-
*cptr = reinterpret_cast< char* >(memcpy(
|
2046
|
+
*cptr = reinterpret_cast< char* >(memcpy(new char[size], cstr, sizeof(char)*(size)));
|
2006
2047
|
} else {
|
2007
2048
|
*cptr = cstr;
|
2008
2049
|
*alloc = SWIG_OLDOBJ;
|
@@ -2031,15 +2072,16 @@ SWIG_AsCharPtrAndSize(VALUE obj, char** cptr, size_t* psize, int *alloc)
|
|
2031
2072
|
|
2032
2073
|
|
2033
2074
|
SWIGINTERN VALUE
|
2034
|
-
SWIG_ruby_failed(
|
2075
|
+
SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2))
|
2035
2076
|
{
|
2036
2077
|
return Qnil;
|
2037
2078
|
}
|
2038
2079
|
|
2039
2080
|
|
2040
|
-
/*@SWIG:/usr/local/share/swig/
|
2041
|
-
SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE
|
2081
|
+
/*@SWIG:/usr/local/Cellar/swig/4.0.2/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
2082
|
+
SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE arg)
|
2042
2083
|
{
|
2084
|
+
VALUE *args = (VALUE *)arg;
|
2043
2085
|
VALUE obj = args[0];
|
2044
2086
|
VALUE type = TYPE(obj);
|
2045
2087
|
long *res = (long *)(args[1]);
|
@@ -2057,7 +2099,7 @@ SWIG_AsVal_long (VALUE obj, long* val)
|
|
2057
2099
|
VALUE a[2];
|
2058
2100
|
a[0] = obj;
|
2059
2101
|
a[1] = (VALUE)(&v);
|
2060
|
-
if (rb_rescue(
|
2102
|
+
if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2LONG), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) {
|
2061
2103
|
if (val) *val = v;
|
2062
2104
|
return SWIG_OK;
|
2063
2105
|
}
|
@@ -2093,9 +2135,10 @@ SWIG_From_unsigned_SS_int (unsigned int value)
|
|
2093
2135
|
}
|
2094
2136
|
|
2095
2137
|
|
2096
|
-
/*@SWIG:/usr/local/share/swig/
|
2097
|
-
SWIGINTERN VALUE SWIG_AUX_NUM2ULONG(VALUE
|
2138
|
+
/*@SWIG:/usr/local/Cellar/swig/4.0.2/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
2139
|
+
SWIGINTERN VALUE SWIG_AUX_NUM2ULONG(VALUE arg)
|
2098
2140
|
{
|
2141
|
+
VALUE *args = (VALUE *)arg;
|
2099
2142
|
VALUE obj = args[0];
|
2100
2143
|
VALUE type = TYPE(obj);
|
2101
2144
|
unsigned long *res = (unsigned long *)(args[1]);
|
@@ -2113,7 +2156,7 @@ SWIG_AsVal_unsigned_SS_long (VALUE obj, unsigned long *val)
|
|
2113
2156
|
VALUE a[2];
|
2114
2157
|
a[0] = obj;
|
2115
2158
|
a[1] = (VALUE)(&v);
|
2116
|
-
if (rb_rescue(
|
2159
|
+
if (rb_rescue(VALUEFUNC(SWIG_AUX_NUM2ULONG), (VALUE)a, VALUEFUNC(SWIG_ruby_failed), 0) != Qnil) {
|
2117
2160
|
if (val) *val = v;
|
2118
2161
|
return SWIG_OK;
|
2119
2162
|
}
|
@@ -2173,22 +2216,20 @@ VALUE taglib_id3v1_genre_map_to_ruby_hash(const TagLib::ID3v1::GenreMap &map) {
|
|
2173
2216
|
|
2174
2217
|
static swig_class SwigClassStringHandler;
|
2175
2218
|
|
2176
|
-
#ifdef HAVE_RB_DEFINE_ALLOC_FUNC
|
2177
2219
|
SWIGINTERN VALUE
|
2178
|
-
|
2220
|
+
#ifdef HAVE_RB_DEFINE_ALLOC_FUNC
|
2221
|
+
_wrap_StringHandler_allocate(VALUE self)
|
2179
2222
|
#else
|
2180
|
-
|
2181
|
-
_wrap_StringHandler_allocate(int argc, VALUE *argv, VALUE self) {
|
2223
|
+
_wrap_StringHandler_allocate(int argc, VALUE *argv, VALUE self)
|
2182
2224
|
#endif
|
2183
|
-
|
2184
|
-
|
2185
|
-
VALUE vresult = SWIG_NewClassInstance(self, SWIGTYPE_p_TagLib__ID3v1__StringHandler);
|
2225
|
+
{
|
2226
|
+
VALUE vresult = SWIG_NewClassInstance(self, SWIGTYPE_p_TagLib__ID3v1__StringHandler);
|
2186
2227
|
#ifndef HAVE_RB_DEFINE_ALLOC_FUNC
|
2187
|
-
|
2228
|
+
rb_obj_call_init(vresult, argc, argv);
|
2188
2229
|
#endif
|
2189
|
-
|
2190
|
-
|
2191
|
-
|
2230
|
+
return vresult;
|
2231
|
+
}
|
2232
|
+
|
2192
2233
|
|
2193
2234
|
SWIGINTERN VALUE
|
2194
2235
|
_wrap_new_StringHandler(int argc, VALUE *argv, VALUE self) {
|
@@ -2271,7 +2312,8 @@ fail:
|
|
2271
2312
|
|
2272
2313
|
|
2273
2314
|
SWIGINTERN void
|
2274
|
-
free_TagLib_ID3v1_StringHandler(
|
2315
|
+
free_TagLib_ID3v1_StringHandler(void *self) {
|
2316
|
+
TagLib::ID3v1::StringHandler *arg1 = (TagLib::ID3v1::StringHandler *)self;
|
2275
2317
|
SWIG_RubyRemoveTracking(arg1);
|
2276
2318
|
delete arg1;
|
2277
2319
|
}
|
@@ -2294,22 +2336,20 @@ fail:
|
|
2294
2336
|
}
|
2295
2337
|
|
2296
2338
|
|
2297
|
-
#ifdef HAVE_RB_DEFINE_ALLOC_FUNC
|
2298
2339
|
SWIGINTERN VALUE
|
2299
|
-
|
2340
|
+
#ifdef HAVE_RB_DEFINE_ALLOC_FUNC
|
2341
|
+
_wrap_Tag_allocate(VALUE self)
|
2300
2342
|
#else
|
2301
|
-
|
2302
|
-
_wrap_Tag_allocate(int argc, VALUE *argv, VALUE self) {
|
2343
|
+
_wrap_Tag_allocate(int argc, VALUE *argv, VALUE self)
|
2303
2344
|
#endif
|
2304
|
-
|
2305
|
-
|
2306
|
-
VALUE vresult = SWIG_NewClassInstance(self, SWIGTYPE_p_TagLib__ID3v1__Tag);
|
2345
|
+
{
|
2346
|
+
VALUE vresult = SWIG_NewClassInstance(self, SWIGTYPE_p_TagLib__ID3v1__Tag);
|
2307
2347
|
#ifndef HAVE_RB_DEFINE_ALLOC_FUNC
|
2308
|
-
|
2348
|
+
rb_obj_call_init(vresult, argc, argv);
|
2309
2349
|
#endif
|
2310
|
-
|
2311
|
-
|
2312
|
-
|
2350
|
+
return vresult;
|
2351
|
+
}
|
2352
|
+
|
2313
2353
|
|
2314
2354
|
SWIGINTERN VALUE
|
2315
2355
|
_wrap_new_Tag__SWIG_1(int argc, VALUE *argv, VALUE self) {
|
@@ -2382,7 +2422,8 @@ fail:
|
|
2382
2422
|
|
2383
2423
|
|
2384
2424
|
SWIGINTERN void
|
2385
|
-
free_TagLib_ID3v1_Tag(
|
2425
|
+
free_TagLib_ID3v1_Tag(void *self) {
|
2426
|
+
TagLib::ID3v1::Tag *arg1 = (TagLib::ID3v1::Tag *)self;
|
2386
2427
|
SWIG_RubyRemoveTracking(arg1);
|
2387
2428
|
delete arg1;
|
2388
2429
|
}
|
@@ -3117,7 +3158,7 @@ SWIG_InitializeModule(void *clientdata) {
|
|
3117
3158
|
|
3118
3159
|
/* Now work on filling in swig_module.types */
|
3119
3160
|
#ifdef SWIGRUNTIME_DEBUG
|
3120
|
-
printf("SWIG_InitializeModule: size %
|
3161
|
+
printf("SWIG_InitializeModule: size %lu\n", (unsigned long)swig_module.size);
|
3121
3162
|
#endif
|
3122
3163
|
for (i = 0; i < swig_module.size; ++i) {
|
3123
3164
|
swig_type_info *type = 0;
|
@@ -3125,7 +3166,7 @@ SWIG_InitializeModule(void *clientdata) {
|
|
3125
3166
|
swig_cast_info *cast;
|
3126
3167
|
|
3127
3168
|
#ifdef SWIGRUNTIME_DEBUG
|
3128
|
-
printf("SWIG_InitializeModule: type %
|
3169
|
+
printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
|
3129
3170
|
#endif
|
3130
3171
|
|
3131
3172
|
/* if there is another module already loaded */
|
@@ -3201,7 +3242,7 @@ SWIG_InitializeModule(void *clientdata) {
|
|
3201
3242
|
for (i = 0; i < swig_module.size; ++i) {
|
3202
3243
|
int j = 0;
|
3203
3244
|
swig_cast_info *cast = swig_module.cast_initial[i];
|
3204
|
-
printf("SWIG_InitializeModule: type %
|
3245
|
+
printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
|
3205
3246
|
while (cast->type) {
|
3206
3247
|
printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
|
3207
3248
|
cast++;
|