taglib-ruby 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1289419ad11f81f79052e260fbb9e1debbf2cd956389797bb6b664356e287ec0
4
- data.tar.gz: '0582a88e09b6e96108a2e4a51a34e5c486f0552918780f38b1c4f05a448745d3'
3
+ metadata.gz: a55f54bdc833c65711a28fbbe37d76b25f0b0c09eadc035e468c342805b4634f
4
+ data.tar.gz: dbcee5669f1aa0675026aed4f644f37bffd3025c3553a516eaf1187348147235
5
5
  SHA512:
6
- metadata.gz: 966e6e0fed73bb68ed20a6f4e9cab07b98f476220e5a294d77f679ea748ddb245e5221241845c7ad515337d1d3f673ebce6cb293cc97ca5e773a385e7e7110e3
7
- data.tar.gz: 35ac3a6342f59be0c6641b861a0c9c9f2b00a2914d12fa8bc4bc05b5ba3af5c2f0199d8b3eb67155146b142274597ab8456ed1df48a72b30bbf90a1ebe86caf5
6
+ metadata.gz: 29780812c27444ee090922a6c132bbc39f4a31332bc9b5b76c69170ecfca0f52a0b4e885ba3f7db5d389c86ad4bd55ffca06f4f28621a70b487e175f6c08f6a8
7
+ data.tar.gz: 7b17dcb6eaf9a80bc12ff4e31d1032935a874b1fb49c283d054f9b2605d1eac56deeb716f35944f6e407bd47f10c1aa1a71a893de354ff6f52b2e448b7150b55
@@ -0,0 +1 @@
1
+ github: robinst
data/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ All notable changes to this project will be documented in this file.
6
6
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
7
7
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
8
8
 
9
+ ## 1.1.3 - 2022-12-29
10
+ ### Changed
11
+ - Fix warning `warning: undefining the allocator of T_DATA class
12
+ swig_runtime_data` on Ruby 3.2
13
+ - Upgraded to SWIG 4.1.1
14
+
9
15
  ## 1.1.2 - 2022-04-13
10
16
  ### Fixed
11
17
  - Fix UserTextIdentificationFrame's constructor so that overloaded
data/README.md CHANGED
@@ -151,7 +151,7 @@ To do everything in one command:
151
151
 
152
152
  ## License
153
153
 
154
- Copyright (c) 2010-2020 Robin Stocker and others, see Git history.
154
+ Copyright (c) 2010-2022 Robin Stocker and others, see Git history.
155
155
 
156
156
  `taglib-ruby` is distributed under the MIT License, see
157
157
  [LICENSE.txt](LICENSE.txt) for details.
@@ -23,6 +23,7 @@
23
23
  %ignore TagLib::RIFF::AIFF::File::File(IOStream *, bool, Properties::ReadStyle);
24
24
  %ignore TagLib::RIFF::AIFF::File::File(IOStream *, bool);
25
25
  %ignore TagLib::RIFF::AIFF::File::File(IOStream *);
26
+ %ignore TagLib::RIFF::AIFF::File::isSupported(IOStream *);
26
27
 
27
28
  // Ignore the unified property interface.
28
29
  %ignore TagLib::RIFF::AIFF::File::properties;
@@ -1,45 +1,17 @@
1
1
  /* ----------------------------------------------------------------------------
2
- * This file was automatically generated by SWIG (http://www.swig.org).
3
- * Version 4.0.2
2
+ * This file was automatically generated by SWIG (https://www.swig.org).
3
+ * Version 4.1.1
4
4
  *
5
- * This file is not intended to be easily readable and contains a number of
6
- * coding conventions designed to improve portability and efficiency. Do not make
7
- * changes to this file unless you know what you are doing--modify the SWIG
8
- * interface file instead.
5
+ * Do not make changes to this file unless you know what you are doing - modify
6
+ * the SWIG interface file instead.
9
7
  * ----------------------------------------------------------------------------- */
10
8
 
11
9
  static void free_taglib_riff_aiff_file(void *ptr);
12
10
 
13
11
 
14
12
 
15
- #ifndef SWIGRUBY
13
+ #define SWIG_VERSION 0x040101
16
14
  #define SWIGRUBY
17
- #endif
18
-
19
-
20
-
21
- #ifdef __cplusplus
22
- /* SwigValueWrapper is described in swig.swg */
23
- template<typename T> class SwigValueWrapper {
24
- struct SwigMovePointer {
25
- T *ptr;
26
- SwigMovePointer(T *p) : ptr(p) { }
27
- ~SwigMovePointer() { delete ptr; }
28
- SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
29
- } pointer;
30
- SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
31
- SwigValueWrapper(const SwigValueWrapper<T>& rhs);
32
- public:
33
- SwigValueWrapper() : pointer(0) { }
34
- SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
35
- operator T&() const { return *pointer.ptr; }
36
- T *operator&() { return pointer.ptr; }
37
- };
38
-
39
- template <typename T> T SwigValueInit() {
40
- return T();
41
- }
42
- #endif
43
15
 
44
16
  /* -----------------------------------------------------------------------------
45
17
  * This section contains generic SWIG labels for method/variable
@@ -335,6 +307,8 @@ template <typename T> T SwigValueInit() {
335
307
  #define SWIG_POINTER_DISOWN 0x1
336
308
  #define SWIG_CAST_NEW_MEMORY 0x2
337
309
  #define SWIG_POINTER_NO_NULL 0x4
310
+ #define SWIG_POINTER_CLEAR 0x8
311
+ #define SWIG_POINTER_RELEASE (SWIG_POINTER_CLEAR | SWIG_POINTER_DISOWN)
338
312
 
339
313
  /* Flags for new pointer objects */
340
314
  #define SWIG_POINTER_OWN 0x1
@@ -406,7 +380,7 @@ template <typename T> T SwigValueInit() {
406
380
  SWIG errors code.
407
381
 
408
382
  Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
409
- allows to return the 'cast rank', for example, if you have this
383
+ allows returning the 'cast rank', for example, if you have this
410
384
 
411
385
  int food(double)
412
386
  int fooi(int);
@@ -420,7 +394,13 @@ template <typename T> T SwigValueInit() {
420
394
  */
421
395
 
422
396
  #define SWIG_OK (0)
397
+ /* Runtime errors are < 0 */
423
398
  #define SWIG_ERROR (-1)
399
+ /* Errors in range -1 to -99 are in swigerrors.swg (errors for all languages including those not using the runtime) */
400
+ /* Errors in range -100 to -199 are language specific errors defined in *errors.swg */
401
+ /* Errors < -200 are generic runtime specific errors */
402
+ #define SWIG_ERROR_RELEASE_NOT_OWNED (-200)
403
+
424
404
  #define SWIG_IsOK(r) (r >= 0)
425
405
  #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError)
426
406
 
@@ -435,7 +415,7 @@ template <typename T> T SwigValueInit() {
435
415
  #define SWIG_OLDOBJ (SWIG_OK)
436
416
  #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK)
437
417
  #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK)
438
- /* Check, add and del mask methods */
418
+ /* Check, add and del object mask methods */
439
419
  #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
440
420
  #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
441
421
  #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
@@ -581,7 +561,7 @@ SWIG_TypeCheck(const char *c, swig_type_info *ty) {
581
561
  Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
582
562
  */
583
563
  SWIGRUNTIME swig_cast_info *
584
- SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
564
+ SWIG_TypeCheckStruct(const swig_type_info *from, swig_type_info *ty) {
585
565
  if (ty) {
586
566
  swig_cast_info *iter = ty->cast;
587
567
  while (iter) {
@@ -641,9 +621,9 @@ SWIG_TypeName(const swig_type_info *ty) {
641
621
  SWIGRUNTIME const char *
642
622
  SWIG_TypePrettyName(const swig_type_info *type) {
643
623
  /* The "str" field contains the equivalent pretty names of the
644
- type, separated by vertical-bar characters. We choose
645
- to print the last name, as it is often (?) the most
646
- specific. */
624
+ type, separated by vertical-bar characters. Choose the last
625
+ name. It should be the most specific; a fully resolved name
626
+ but not necessarily with default template parameters expanded. */
647
627
  if (!type) return NULL;
648
628
  if (type->str != NULL) {
649
629
  const char *last_name = type->str;
@@ -863,7 +843,7 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
863
843
  }
864
844
  #endif
865
845
 
866
- /* Errors in SWIG */
846
+ /* SWIG Errors applicable to all language modules, values are reserved from -1 to -99 */
867
847
  #define SWIG_UnknownError -1
868
848
  #define SWIG_IOError -2
869
849
  #define SWIG_RuntimeError -3
@@ -879,9 +859,25 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
879
859
  #define SWIG_NullReferenceError -13
880
860
 
881
861
 
862
+ #if __GNUC__ >= 7
863
+ #pragma GCC diagnostic push
864
+ #if defined(__cplusplus)
865
+ #pragma GCC diagnostic ignored "-Wregister"
866
+ #if __GNUC__ >= 10
867
+ #pragma GCC diagnostic ignored "-Wvolatile"
868
+ #if __GNUC__ >= 11
869
+ #pragma GCC diagnostic ignored "-Wdeprecated-enum-enum-conversion"
870
+ #endif
871
+ #endif
872
+ #endif
873
+ #endif
882
874
 
883
875
  #include <ruby.h>
884
876
 
877
+ #if __GNUC__ >= 7
878
+ #pragma GCC diagnostic pop
879
+ #endif
880
+
885
881
  /* Ruby 1.9.1 has a "memoisation optimisation" when compiling with GCC which
886
882
  * breaks using rb_intern as an lvalue, as SWIG does. We work around this
887
883
  * issue for now by disabling this.
@@ -1661,6 +1657,11 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
1661
1657
  own->own = 0;
1662
1658
  }
1663
1659
 
1660
+ if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE)) {
1661
+ if (!RDATA(obj)->dfree)
1662
+ return SWIG_ERROR_RELEASE_NOT_OWNED;
1663
+ }
1664
+
1664
1665
  /* Check to see if the input object is giving up ownership
1665
1666
  of the underlying C struct or C++ object. If so then we
1666
1667
  need to reset the destructor since the Ruby object no
@@ -1672,7 +1673,7 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
1672
1673
  swig_class *sklass = (swig_class *) ty->clientdata;
1673
1674
  track = sklass->trackObjects;
1674
1675
  }
1675
-
1676
+
1676
1677
  if (track) {
1677
1678
  /* We are tracking objects for this class. Thus we change the destructor
1678
1679
  * to SWIG_RubyRemoveTracking. This allows us to
@@ -1686,6 +1687,10 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
1686
1687
  }
1687
1688
  }
1688
1689
 
1690
+ if (flags & SWIG_POINTER_CLEAR) {
1691
+ DATA_PTR(obj) = 0;
1692
+ }
1693
+
1689
1694
  /* Do type-checking if type info was provided */
1690
1695
  if (ty) {
1691
1696
  if (ty->clientdata) {
@@ -1793,6 +1798,7 @@ SWIG_Ruby_SetModule(swig_module_info *pointer)
1793
1798
  {
1794
1799
  /* register a new class */
1795
1800
  VALUE cl = rb_define_class("swig_runtime_data", rb_cObject);
1801
+ rb_undef_alloc_func(cl);
1796
1802
  /* create and store the structure pointer to a global variable */
1797
1803
  swig_runtime_data_type_pointer = Data_Wrap_Struct(cl, 0, 0, pointer);
1798
1804
  rb_define_readonly_variable("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, &swig_runtime_data_type_pointer);
@@ -1823,7 +1829,7 @@ int SWIG_Ruby_arity( VALUE proc, int minimal )
1823
1829
  {
1824
1830
  if ( rb_respond_to( proc, swig_arity_id ) )
1825
1831
  {
1826
- VALUE num = rb_funcall( proc, swig_arity_id, 0 );
1832
+ VALUE num = rb_funcall2( proc, swig_arity_id, 0, 0 );
1827
1833
  int arity = NUM2INT(num);
1828
1834
  if ( arity < 0 && (arity+1) < -minimal ) return 1;
1829
1835
  if ( arity == minimal ) return 1;
@@ -1841,7 +1847,7 @@ int SWIG_Ruby_arity( VALUE proc, int minimal )
1841
1847
 
1842
1848
  #define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0)
1843
1849
 
1844
- #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else
1850
+ #define SWIG_contract_assert(expr, msg) do { if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } } while (0)
1845
1851
 
1846
1852
 
1847
1853
 
@@ -1868,12 +1874,56 @@ static swig_module_info swig_module = {swig_types, 9, 0, 0, 0, 0};
1868
1874
 
1869
1875
  static VALUE mAIFF;
1870
1876
 
1871
- #define SWIG_RUBY_THREAD_BEGIN_BLOCK
1872
- #define SWIG_RUBY_THREAD_END_BLOCK
1877
+ #ifdef __cplusplus
1878
+ #include <utility>
1879
+ /* SwigValueWrapper is described in swig.swg */
1880
+ template<typename T> class SwigValueWrapper {
1881
+ struct SwigSmartPointer {
1882
+ T *ptr;
1883
+ SwigSmartPointer(T *p) : ptr(p) { }
1884
+ ~SwigSmartPointer() { delete ptr; }
1885
+ SwigSmartPointer& operator=(SwigSmartPointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
1886
+ void reset(T *p) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = p; }
1887
+ } pointer;
1888
+ SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
1889
+ SwigValueWrapper(const SwigValueWrapper<T>& rhs);
1890
+ public:
1891
+ SwigValueWrapper() : pointer(0) { }
1892
+ SwigValueWrapper& operator=(const T& t) { SwigSmartPointer tmp(new T(t)); pointer = tmp; return *this; }
1893
+ #if __cplusplus >=201103L
1894
+ SwigValueWrapper& operator=(T&& t) { SwigSmartPointer tmp(new T(std::move(t))); pointer = tmp; return *this; }
1895
+ operator T&&() const { return std::move(*pointer.ptr); }
1896
+ #else
1897
+ operator T&() const { return *pointer.ptr; }
1898
+ #endif
1899
+ T *operator&() const { return pointer.ptr; }
1900
+ static void reset(SwigValueWrapper& t, T *p) { t.pointer.reset(p); }
1901
+ };
1873
1902
 
1903
+ /*
1904
+ * SwigValueInit() is a generic initialisation solution as the following approach:
1905
+ *
1906
+ * T c_result = T();
1907
+ *
1908
+ * doesn't compile for all types for example:
1909
+ *
1910
+ * unsigned int c_result = unsigned int();
1911
+ */
1912
+ template <typename T> T SwigValueInit() {
1913
+ return T();
1914
+ }
1874
1915
 
1875
- #define SWIGVERSION 0x040002
1876
- #define SWIG_VERSION SWIGVERSION
1916
+ #if __cplusplus >=201103L
1917
+ # define SWIG_STD_MOVE(OBJ) std::move(OBJ)
1918
+ #else
1919
+ # define SWIG_STD_MOVE(OBJ) OBJ
1920
+ #endif
1921
+
1922
+ #endif
1923
+
1924
+
1925
+ #define SWIG_RUBY_THREAD_BEGIN_BLOCK
1926
+ #define SWIG_RUBY_THREAD_END_BLOCK
1877
1927
 
1878
1928
 
1879
1929
  #define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a))
@@ -2042,7 +2092,7 @@ SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2))
2042
2092
  }
2043
2093
 
2044
2094
 
2045
- /*@SWIG:/usr/local/Cellar/swig/4.0.2/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2095
+ /*@SWIG:/usr/local/Cellar/swig/4.1.1/share/swig/4.1.1/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2046
2096
  SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE arg)
2047
2097
  {
2048
2098
  VALUE *args = (VALUE *)arg;
@@ -2641,7 +2691,7 @@ SWIGINTERN VALUE _wrap_new_File(int nargs, VALUE *args, VALUE self) {
2641
2691
  argv[ii] = args[ii];
2642
2692
  }
2643
2693
  if (argc == 1) {
2644
- int _v;
2694
+ int _v = 0;
2645
2695
  int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
2646
2696
  _v = SWIG_CheckState(res);
2647
2697
  if (_v) {
@@ -2649,7 +2699,7 @@ SWIGINTERN VALUE _wrap_new_File(int nargs, VALUE *args, VALUE self) {
2649
2699
  }
2650
2700
  }
2651
2701
  if (argc == 2) {
2652
- int _v;
2702
+ int _v = 0;
2653
2703
  int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
2654
2704
  _v = SWIG_CheckState(res);
2655
2705
  if (_v) {
@@ -2663,7 +2713,7 @@ SWIGINTERN VALUE _wrap_new_File(int nargs, VALUE *args, VALUE self) {
2663
2713
  }
2664
2714
  }
2665
2715
  if (argc == 3) {
2666
- int _v;
2716
+ int _v = 0;
2667
2717
  int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
2668
2718
  _v = SWIG_CheckState(res);
2669
2719
  if (_v) {
@@ -2822,7 +2872,7 @@ static swig_type_info _swigt__p_TagLib__RIFF__AIFF__File = {"_p_TagLib__RIFF__AI
2822
2872
  static swig_type_info _swigt__p_TagLib__RIFF__AIFF__Properties = {"_p_TagLib__RIFF__AIFF__Properties", "TagLib::RIFF::AIFF::Properties *", 0, 0, (void*)0, 0};
2823
2873
  static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
2824
2874
  static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "TagLib::uchar *|unsigned char *", 0, 0, (void*)0, 0};
2825
- static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "unsigned int *|TagLib::uint *", 0, 0, (void*)0, 0};
2875
+ static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "TagLib::uint *|unsigned int *", 0, 0, (void*)0, 0};
2826
2876
  static swig_type_info _swigt__p_unsigned_long = {"_p_unsigned_long", "TagLib::ulong *|unsigned long *", 0, 0, (void*)0, 0};
2827
2877
  static swig_type_info _swigt__p_wchar_t = {"_p_wchar_t", "TagLib::wchar *|wchar_t *", 0, 0, (void*)0, 0};
2828
2878
 
@@ -2915,9 +2965,12 @@ extern "C" {
2915
2965
  #define SWIGRUNTIME_DEBUG
2916
2966
  #endif
2917
2967
 
2968
+ #ifndef SWIG_INIT_CLIENT_DATA_TYPE
2969
+ #define SWIG_INIT_CLIENT_DATA_TYPE void *
2970
+ #endif
2918
2971
 
2919
2972
  SWIGRUNTIME void
2920
- SWIG_InitializeModule(void *clientdata) {
2973
+ SWIG_InitializeModule(SWIG_INIT_CLIENT_DATA_TYPE clientdata) {
2921
2974
  size_t i;
2922
2975
  swig_module_info *module_head, *iter;
2923
2976
  int init;
@@ -34,13 +34,25 @@ namespace TagLib {
34
34
 
35
35
  // Rename setters to Ruby convention (combining SWIG rename functions
36
36
  // does not seem to be possible, thus resort to some magic)
37
+ // We used to do this with one "command" filter, but support for that was
38
+ // removed in SWIG 4.1.0. This is a bit uglier because we need one filter for
39
+ // setOne, one for setOneTwo, and one for setOneTwoThree. Looks like we don't
40
+ // need one for 4 yet.
37
41
  // setFoo -> foo=
38
- %rename("%(command: perl -e \"print lc(join('_', split(/(?=[A-Z])/, substr(@ARGV[0], 3)))), '='\" )s",
39
- regexmatch$name="^set[A-Z]") "";
42
+ %rename("%(regex:/set([A-Z][a-z]*)([A-Z][a-z]*)([A-Z][a-z]*)/\\L\\1_\\2_\\3=/)s",
43
+ regexmatch$name="^set([A-Z][a-z]*){3}$") "";
44
+ %rename("%(regex:/set([A-Z][a-z]*)([A-Z][a-z]*)/\\L\\1_\\2=/)s",
45
+ regexmatch$name="^set([A-Z][a-z]*){2}$") "";
46
+ %rename("%(regex:/set([A-Z][a-z]*)/\\L\\1=/)s",
47
+ regexmatch$name="^set([A-Z][a-z]*)$") "";
40
48
 
41
49
  // isFoo -> foo?
42
- %rename("%(command: perl -e \"print lc(join('_', split(/(?=[A-Z])/, substr(@ARGV[0], 2)))), '?'\" )s",
43
- regexmatch$name="^is[A-Z]") "";
50
+ %rename("%(regex:/is([A-Z][a-z]*)([A-Z][a-z]*)([A-Z][a-z]*)/\\L\\1_\\2_\\3?/)s",
51
+ regexmatch$name="^is([A-Z][a-z]*){3}$") "";
52
+ %rename("%(regex:/is([A-Z][a-z]*)([A-Z][a-z]*)/\\L\\1_\\2?/)s",
53
+ regexmatch$name="^is([A-Z][a-z]*){2}$") "";
54
+ %rename("%(regex:/is([A-Z][a-z]*)/\\L\\1?/)s",
55
+ regexmatch$name="^is([A-Z][a-z]*)$") "";
44
56
 
45
57
  // ByteVector
46
58
  %typemap(out) TagLib::ByteVector {