id3lib  3.8.3
c_wrapper.cpp
Go to the documentation of this file.
1 // $Id: c_wrapper.cpp,v 1.22 2002/09/21 17:23:32 t1mpy Exp $
2 
3 // id3lib: a C++ library for creating and manipulating id3v1/v2 tags
4 // Copyright 1999, 2000 Scott Thomas Haug
5 // Copyright 2002 Thijmen Klok (thijmen@id3lib.org)
6 
7 // This library is free software; you can redistribute it and/or modify it
8 // under the terms of the GNU Library General Public License as published by
9 // the Free Software Foundation; either version 2 of the License, or (at your
10 // option) any later version.
11 //
12 // This library is distributed in the hope that it will be useful, but WITHOUT
13 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
15 // License for more details.
16 //
17 // You should have received a copy of the GNU Library General Public License
18 // along with this library; if not, write to the Free Software Foundation,
19 // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 
21 // The id3lib authors encourage improvements and optimisations to be sent to
22 // the id3lib coordinator. Please see the README file for details on where to
23 // send such submissions. See the AUTHORS file for a list of people who have
24 // contributed to id3lib. See the ChangeLog file for a list of changes to
25 // id3lib. These files are distributed with id3lib at
26 // http://download.sourceforge.net/id3lib/
27 
28 //#include <string.h>
29 #include "id3.h"
30 #include "tag.h"
31 #include "field.h"
32 
33 #if defined HAVE_CONFIG_H
34 #include <config.h>
35 #endif
36 
37 #ifdef __cplusplus
38 extern "C"
39 {
40 #endif /* __cplusplus */
41 
42  // tag wrappers
43 
44 #define ID3_CATCH(code) try { code; } catch (...) { }
45 
46  ID3_C_EXPORT ID3Tag* CCONV
47  ID3Tag_New(void)
48  {
49  ID3_Tag* tag = NULL;
50  ID3_CATCH(tag = new ID3_Tag);
51  return reinterpret_cast<ID3Tag *>(tag);
52  }
53 
54 
55  ID3_C_EXPORT void CCONV
56  ID3Tag_Delete(ID3Tag *tag)
57  {
58  if (tag)
59  {
60  ID3_CATCH(delete reinterpret_cast<ID3_Tag*>(tag));
61  }
62  }
63 
64 
65  ID3_C_EXPORT void CCONV
66  ID3Tag_Clear(ID3Tag *tag)
67  {
68  if (tag)
69  {
70  ID3_CATCH(reinterpret_cast<ID3_Tag*>(tag)->Clear());
71  }
72  }
73 
74 
75  ID3_C_EXPORT bool CCONV
76  ID3Tag_HasChanged(const ID3Tag *tag)
77  {
78  bool changed = false;
79 
80  if (tag)
81  {
82  ID3_CATCH(changed = reinterpret_cast<const ID3_Tag * >(tag)->HasChanged());
83  }
84 
85  return changed;
86  }
87 
88 
89  ID3_C_EXPORT void CCONV
90  ID3Tag_SetUnsync(ID3Tag *tag, bool unsync)
91  {
92  if (tag)
93  {
94  ID3_CATCH(reinterpret_cast<ID3_Tag *>(tag)->SetUnsync(unsync));
95  }
96  }
97 
98 
99  ID3_C_EXPORT void CCONV
100  ID3Tag_SetExtendedHeader(ID3Tag *tag, bool ext)
101  {
102  if (tag)
103  {
104  ID3_CATCH(reinterpret_cast<ID3_Tag *>(tag)->SetExtendedHeader(ext));
105  }
106  }
107 
108  ID3_C_EXPORT void CCONV
109  ID3Tag_SetPadding(ID3Tag *tag, bool pad)
110  {
111  if (tag)
112  {
113  ID3_CATCH(reinterpret_cast<ID3_Tag *>(tag)->SetPadding(pad));
114  }
115  }
116 
117 
118  ID3_C_EXPORT void CCONV
119  ID3Tag_AddFrame(ID3Tag *tag, const ID3Frame *frame)
120  {
121  if (tag)
122  {
123  ID3_CATCH(reinterpret_cast<ID3_Tag *>(tag)->AddFrame(reinterpret_cast<const ID3_Frame *>(frame)));
124  }
125  }
126 
127 
128  ID3_C_EXPORT bool CCONV
129  ID3Tag_AttachFrame(ID3Tag *tag, ID3Frame *frame)
130  {
131  bool b = false;
132  if (tag)
133  {
134  ID3_CATCH(b = reinterpret_cast<ID3_Tag *>(tag)->AttachFrame(reinterpret_cast<ID3_Frame *>(frame)));
135  }
136  return b;
137  }
138 
139 
140  ID3_C_EXPORT void CCONV
141  ID3Tag_AddFrames(ID3Tag *tag, const ID3Frame *frames, size_t num)
142  {
143  if (tag)
144  {
145  ID3_CATCH(reinterpret_cast<ID3_Tag *>(tag)->AddFrames(reinterpret_cast<const ID3_Frame *>(frames), num));
146  }
147  }
148 
149 
150  ID3_C_EXPORT ID3Frame* CCONV
151  ID3Tag_RemoveFrame(ID3Tag *tag, const ID3Frame *frame)
152  {
153  ID3_Frame* rem_frame = NULL;
154  if (tag)
155  {
156  ID3_CATCH(rem_frame = reinterpret_cast<ID3_Tag *>(tag)->RemoveFrame(reinterpret_cast<const ID3_Frame *>(frame)));
157  }
158  return reinterpret_cast<ID3Frame*>(rem_frame);
159  }
160 
161 
163  ID3Tag_Parse(ID3Tag *tag, const uchar header[ ID3_TAGHEADERSIZE ],
164  const uchar *buffer)
165  {
166  size_t size = 0;
167  if (tag)
168  {
169  ID3_CATCH(size = reinterpret_cast<ID3_Tag *>(tag)->Parse(header, buffer));
170  }
171  return ID3E_NoError;
172  }
173 
174 
175  ID3_C_EXPORT size_t CCONV
176  ID3Tag_Link(ID3Tag *tag, const char *fileName)
177  {
178  size_t offset = 0;
179  if (tag)
180  {
181  ID3_CATCH(offset = reinterpret_cast<ID3_Tag *>(tag)->Link(fileName));
182  }
183  return offset;
184  }
185 
186  ID3_C_EXPORT size_t CCONV
187  ID3Tag_LinkWithFlags(ID3Tag *tag, const char *fileName, flags_t flags)
188  {
189  size_t offset = 0;
190  if (tag)
191  {
192  ID3_CATCH(offset = reinterpret_cast<ID3_Tag *>(tag)->Link(fileName,flags));
193  }
194  return offset;
195  }
196 
197 
198 
200  ID3Tag_Update(ID3Tag *tag)
201  {
202  flags_t flags = 0;
203  if (tag)
204  {
205  ID3_CATCH(flags = reinterpret_cast<ID3_Tag *>(tag)->Update());
206  }
207  return ID3E_NoError;
208  }
209 
211  ID3Tag_UpdateByTagType(ID3Tag *tag, flags_t tag_type)
212  {
213  flags_t flags = 0;
214  if (tag)
215  {
216  ID3_CATCH(flags = reinterpret_cast<ID3_Tag *>(tag)->Update(tag_type));
217  }
218  return ID3E_NoError;
219  }
220 
221 
223  ID3Tag_Strip(ID3Tag *tag, flags_t ulTagFlags)
224  {
225  if (tag)
226  {
227  ID3_CATCH(reinterpret_cast<ID3_Tag *>(tag)->Strip(ulTagFlags));
228  }
229  return ID3E_NoError;
230  }
231 
232 
233  ID3_C_EXPORT ID3Frame* CCONV
234  ID3Tag_FindFrameWithID(const ID3Tag *tag, ID3_FrameID id)
235  {
236  ID3_Frame *frame = NULL;
237 
238  if (tag)
239  {
240  ID3_CATCH(frame = reinterpret_cast<const ID3_Tag *>(tag)->Find(id));
241  }
242 
243  return reinterpret_cast<ID3Frame *>(frame);
244  }
245 
246 
247  ID3_C_EXPORT ID3Frame* CCONV
248  ID3Tag_FindFrameWithINT(const ID3Tag *tag, ID3_FrameID id,
249  ID3_FieldID fld, uint32 data)
250  {
251  ID3_Frame *frame = NULL;
252 
253  if (tag)
254  {
255  ID3_CATCH(frame = reinterpret_cast<const ID3_Tag *>(tag)->Find(id, fld, data));
256  }
257 
258  return reinterpret_cast<ID3Frame *>(frame);
259  }
260 
261 
262  ID3_C_EXPORT ID3Frame* CCONV
263  ID3Tag_FindFrameWithASCII(const ID3Tag *tag, ID3_FrameID id,
264  ID3_FieldID fld, const char *data)
265  {
266  ID3_Frame *frame = NULL;
267 
268  if (tag)
269  {
270  ID3_CATCH(frame = reinterpret_cast<const ID3_Tag *>(tag)->Find(id, fld, data));
271  }
272 
273  return reinterpret_cast<ID3Frame *>(frame);
274  }
275 
276 
277  ID3_C_EXPORT ID3Frame* CCONV
279  ID3_FieldID fld, const unicode_t *data)
280  {
281  ID3_Frame *frame = NULL;
282 
283  if (tag)
284  {
285  ID3_CATCH(frame = reinterpret_cast<const ID3_Tag *>(tag)->Find(id, fld, data));
286  }
287 
288  return reinterpret_cast<ID3Frame *>(frame);
289  }
290 
291 
292  ID3_C_EXPORT size_t CCONV
293  ID3Tag_NumFrames(const ID3Tag *tag)
294  {
295  size_t num = 0;
296 
297  if (tag)
298  {
299  ID3_CATCH(num = reinterpret_cast<const ID3_Tag *>(tag)->NumFrames());
300  }
301 
302  return num;
303  }
304 
305 
306  ID3_C_EXPORT bool CCONV
307  ID3Tag_HasTagType(const ID3Tag *tag, ID3_TagType tt)
308  {
309  bool has_tt = false;
310 
311  if (tag)
312  {
313  ID3_CATCH(has_tt = reinterpret_cast<const ID3_Tag *>(tag)->HasTagType(tt));
314  }
315 
316  return has_tt;
317  }
318 
319  ID3_C_EXPORT ID3TagIterator* CCONV
321  {
322  ID3_Tag::Iterator* iter = NULL;
323 
324  if (tag)
325  {
326  ID3_CATCH(iter = reinterpret_cast<ID3_Tag*>(tag)->CreateIterator());
327  }
328 
329  return reinterpret_cast<ID3TagIterator*>(iter);
330  }
331 
332  ID3_C_EXPORT ID3TagConstIterator* CCONV
333  ID3Tag_CreateConstIterator(const ID3Tag* tag)
334  {
336 
337  if (tag)
338  {
339  ID3_CATCH(iter = reinterpret_cast<const ID3_Tag*>(tag)->CreateIterator());
340  }
341 
342  return reinterpret_cast<ID3TagConstIterator*>(iter);
343  }
344 
345  ID3_C_EXPORT void CCONV
346  ID3TagIterator_Delete(ID3TagIterator *iter)
347  {
348  if (iter)
349  {
350  ID3_CATCH(delete reinterpret_cast<ID3_Tag::Iterator*>(iter));
351  }
352  }
353 
354  ID3_C_EXPORT ID3Frame* CCONV
355  ID3TagIterator_GetNext(ID3TagIterator *iter)
356  {
357  ID3_Frame* frame = NULL;
358  if (iter)
359  {
360  ID3_CATCH(frame = reinterpret_cast<ID3_Tag::Iterator*>(iter)->GetNext());
361  }
362  return reinterpret_cast<ID3Frame*>(frame);
363  }
364 
365  ID3_C_EXPORT void CCONV
366  ID3TagConstIterator_Delete(ID3TagConstIterator *iter)
367  {
368  if (iter)
369  {
370  ID3_CATCH(delete reinterpret_cast<ID3_Tag::ConstIterator*>(iter));
371  }
372  }
373 
374  ID3_C_EXPORT const ID3Frame* CCONV
375  ID3TagConstIterator_GetNext(ID3TagConstIterator *iter)
376  {
377  const ID3_Frame* frame = NULL;
378  if (iter)
379  {
380  ID3_CATCH(frame = reinterpret_cast<ID3_Tag::ConstIterator*>(iter)->GetNext());
381  }
382  return reinterpret_cast<const ID3Frame*>(frame);
383  }
384 
385  // frame wrappers
386 
387  ID3_C_EXPORT ID3Frame* CCONV
389  {
390  ID3_Frame* frame = NULL;
391  ID3_CATCH(frame = new ID3_Frame);
392  return reinterpret_cast<ID3Frame *>(frame);
393  }
394 
395  ID3_C_EXPORT ID3Frame* CCONV
397  {
398  ID3_Frame* frame = NULL;
399  ID3_CATCH(frame = new ID3_Frame(id));
400  return reinterpret_cast<ID3Frame *>(frame);
401  }
402 
403  ID3_C_EXPORT void CCONV
404  ID3Frame_Delete(ID3Frame *frame)
405  {
406  if (frame)
407  {
408  ID3_CATCH(delete reinterpret_cast<ID3_Frame *>(frame));
409  }
410  }
411 
412 
413  ID3_C_EXPORT void CCONV
414  ID3Frame_Clear(ID3Frame *frame)
415  {
416  if (frame)
417  {
418  ID3_CATCH(reinterpret_cast<ID3_Frame *>(frame)->Clear());
419  }
420  }
421 
422 
423  ID3_C_EXPORT void CCONV
424  ID3Frame_SetID(ID3Frame *frame, ID3_FrameID id)
425  {
426  if (frame)
427  {
428  ID3_CATCH(reinterpret_cast<ID3_Frame *>(frame)->SetID(id));
429  }
430  }
431 
432 
434  ID3Frame_GetID(const ID3Frame *frame)
435  {
437 
438  if (frame)
439  {
440  ID3_CATCH(id = reinterpret_cast<const ID3_Frame *>(frame)->GetID());
441  }
442 
443  return id;
444  }
445 
446 
447  ID3_C_EXPORT ID3Field* CCONV
448  ID3Frame_GetField(const ID3Frame *frame, ID3_FieldID name)
449  {
450  ID3_Field *field = NULL;
451 
452  if (frame)
453  {
454  ID3_CATCH(field = reinterpret_cast<const ID3_Frame *>(frame)->GetField(name));
455  }
456 
457  return reinterpret_cast<ID3Field *>(field);
458  }
459 
460 
461  ID3_C_EXPORT void CCONV
462  ID3Frame_SetCompression(ID3Frame *frame, bool comp)
463  {
464  if (frame)
465  {
466  ID3_CATCH(reinterpret_cast<ID3_Frame *>(frame)->SetCompression(comp));
467  }
468  }
469 
470 
471  ID3_C_EXPORT bool CCONV
472  ID3Frame_GetCompression(const ID3Frame *frame)
473  {
474  bool compressed = false;
475  if (frame)
476  {
477  ID3_CATCH(compressed = reinterpret_cast<const ID3_Frame *>(frame)->GetCompression());
478  }
479  return compressed;
480  }
481 
482 
483  // field wrappers
484 
485 
486  ID3_C_EXPORT void CCONV
487  ID3Field_Clear(ID3Field *field)
488  {
489  if (field)
490  {
491  ID3_CATCH(reinterpret_cast<ID3_Field *>(field)->Clear());
492  }
493  }
494 
495 
496  ID3_C_EXPORT size_t CCONV
497  ID3Field_Size(const ID3Field *field)
498  {
499  size_t size = 0;
500 
501  if (field)
502  {
503  ID3_CATCH(size = reinterpret_cast<const ID3_Field *>(field)->Size());
504  }
505 
506  return size;
507  }
508 
509 
510  ID3_C_EXPORT size_t CCONV
511  ID3Field_GetNumTextItems(const ID3Field *field)
512  {
513  size_t items = 0;
514 
515  if (field)
516  {
517  ID3_CATCH(items = reinterpret_cast<const ID3_Field *>(field)->GetNumTextItems());
518  }
519 
520  return items;
521  }
522 
523 
524  ID3_C_EXPORT void CCONV
525  ID3Field_SetINT(ID3Field *field, uint32 data)
526  {
527  if (field)
528  {
529  ID3_CATCH(reinterpret_cast<ID3_Field *>(field)->Set(data));
530  }
531  }
532 
533 
534  ID3_C_EXPORT uint32 CCONV
535  ID3Field_GetINT(const ID3Field *field)
536  {
537  uint32 value = 0;
538 
539  if (field)
540  {
541  ID3_CATCH(value = reinterpret_cast<const ID3_Field *>(field)->Get());
542  }
543 
544  return value;
545  }
546 
547 
548  ID3_C_EXPORT void CCONV
549  ID3Field_SetUNICODE(ID3Field *field, const unicode_t *string)
550  {
551  if (field)
552  {
553  ID3_CATCH(reinterpret_cast<ID3_Field *>(field)->Set(string));
554  }
555  }
556 
557 
558  ID3_C_EXPORT size_t CCONV
559  ID3Field_GetUNICODE(const ID3Field *field, unicode_t *buffer, size_t maxChars)
560  {
561  size_t numChars = 0;
562 
563  if (field)
564  {
565  ID3_CATCH(numChars = reinterpret_cast<const ID3_Field *>(field)->Get(buffer, maxChars));
566  }
567 
568  return numChars;
569  }
570 
571 
572  ID3_C_EXPORT size_t CCONV
573  ID3Field_GetUNICODEItem(const ID3Field *field, unicode_t *buffer,
574  size_t maxChars, size_t itemNum)
575  {
576  size_t numChars = 0;
577 
578  if (field)
579  {
580  ID3_CATCH(numChars = reinterpret_cast<const ID3_Field *>(field)->Get(buffer, maxChars, itemNum));
581  }
582 
583  return numChars;
584  }
585 
586 
587  ID3_C_EXPORT void CCONV
588  ID3Field_AddUNICODE(ID3Field *field, const unicode_t *string)
589  {
590  if (field)
591  {
592  ID3_CATCH(reinterpret_cast<ID3_Field *>(field)->Add(string));
593  }
594  }
595 
596 
597  ID3_C_EXPORT void CCONV
598  ID3Field_SetASCII(ID3Field *field, const char *string)
599  {
600  if (field)
601  {
602  ID3_CATCH(reinterpret_cast<ID3_Field *>(field)->Set(string));
603  }
604  }
605 
606 
607  ID3_C_EXPORT size_t CCONV
608  ID3Field_GetASCII(const ID3Field *field, char *buffer, size_t maxChars)
609  {
610  size_t numChars = 0;
611 
612  if (field)
613  {
614  ID3_CATCH(numChars = reinterpret_cast<const ID3_Field *>(field)->Get(buffer, maxChars));
615  }
616 
617  return numChars;
618  }
619 
620  ID3_C_EXPORT size_t CCONV
621  ID3Field_GetASCIIItem(const ID3Field *field, char *buffer,
622  size_t maxChars, size_t itemNum)
623  {
624  size_t numChars = 0;
625 
626  if (field)
627  {
628  ID3_CATCH(numChars = reinterpret_cast<const ID3_Field *>(field)->Get(buffer, maxChars, itemNum));
629  }
630 
631  return numChars;
632  }
633 
634 
635  ID3_C_EXPORT void CCONV
636  ID3Field_AddASCII(ID3Field *field, const char *string)
637  {
638  if (field)
639  {
640  ID3_CATCH(reinterpret_cast<ID3_Field *>(field)->Add(string));
641  }
642  }
643 
644 
645  ID3_C_EXPORT void CCONV
646  ID3Field_SetBINARY(ID3Field *field, const uchar *data, size_t size)
647  {
648  if (field)
649  {
650  ID3_CATCH(reinterpret_cast<ID3_Field *>(field)->Set(data, size));
651  }
652  }
653 
654 
655  ID3_C_EXPORT void CCONV
656  ID3Field_GetBINARY(const ID3Field *field, uchar *buffer, size_t buffLength)
657  {
658  if (field)
659  {
660  ID3_CATCH(reinterpret_cast<const ID3_Field *>(field)->Get(buffer, buffLength));
661  }
662  }
663 
664 
665  ID3_C_EXPORT void CCONV
666  ID3Field_FromFile(ID3Field *field, const char *fileName)
667  {
668  if (field)
669  {
670  ID3_CATCH(reinterpret_cast<ID3_Field *>(field)->FromFile(fileName));
671  }
672  }
673 
674 
675  ID3_C_EXPORT void CCONV
676  ID3Field_ToFile(const ID3Field *field, const char *fileName)
677  {
678  if (field)
679  {
680  ID3_CATCH(reinterpret_cast<const ID3_Field *>(field)->ToFile(fileName));
681  }
682  }
683 
684  ID3_C_EXPORT bool CCONV
685  ID3Field_SetEncoding(ID3Field *field, ID3_TextEnc enc)
686  {
687  bool changed = false;
688  if (field)
689  {
690  ID3_CATCH(changed = reinterpret_cast<ID3_Field *>(field)->SetEncoding(enc));
691  }
692  return changed;
693  }
694 
696  ID3Field_GetEncoding(const ID3Field *field)
697  {
698  ID3_TextEnc enc = ID3TE_NONE;
699  if (field)
700  {
701  ID3_CATCH(enc = reinterpret_cast<const ID3_Field *>(field)->GetEncoding());
702  }
703  return enc;
704  }
705 
706  ID3_C_EXPORT bool CCONV
707  ID3Field_IsEncodable(const ID3Field *field)
708  {
709  bool isEncodable = false;
710  if (field)
711  {
712  ID3_CATCH(isEncodable = reinterpret_cast<const ID3_Field *>(field)->IsEncodable());
713  }
714  return isEncodable;
715  }
716 
717 #ifdef __cplusplus
718 }
719 #endif /* __cplusplus */
720 
ID3_C_EXPORT ID3Tag *CCONV ID3Tag_New(void)
Definition: c_wrapper.cpp:47
ID3_C_EXPORT size_t CCONV ID3Field_GetASCIIItem(const ID3Field *field, char *buffer, size_t maxChars, size_t itemNum)
Definition: c_wrapper.cpp:621
ID3_C_EXPORT ID3Frame *CCONV ID3Tag_RemoveFrame(ID3Tag *tag, const ID3Frame *frame)
Definition: c_wrapper.cpp:151
ID3_C_EXPORT bool CCONV ID3Frame_GetCompression(const ID3Frame *frame)
Definition: c_wrapper.cpp:472
ID3_C_EXPORT void CCONV ID3Tag_AddFrame(ID3Tag *tag, const ID3Frame *frame)
Definition: c_wrapper.cpp:119
ID3_C_EXPORT bool CCONV ID3Tag_AttachFrame(ID3Tag *tag, ID3Frame *frame)
Definition: c_wrapper.cpp:129
ID3_C_EXPORT ID3_Err CCONV ID3Tag_Update(ID3Tag *tag)
Definition: c_wrapper.cpp:200
ID3_C_EXPORT void CCONV ID3Field_FromFile(ID3Field *field, const char *fileName)
Definition: c_wrapper.cpp:666
ID3_C_EXPORT void CCONV ID3Field_SetASCII(ID3Field *field, const char *string)
Definition: c_wrapper.cpp:598
ID3_C_EXPORT ID3Frame *CCONV ID3Tag_FindFrameWithID(const ID3Tag *tag, ID3_FrameID id)
Definition: c_wrapper.cpp:234
ID3_C_EXPORT ID3Frame *CCONV ID3Frame_NewID(ID3_FrameID id)
Definition: c_wrapper.cpp:396
ID3_C_EXPORT void CCONV ID3Tag_SetExtendedHeader(ID3Tag *tag, bool ext)
Definition: c_wrapper.cpp:100
ID3_C_EXPORT size_t CCONV ID3Field_Size(const ID3Field *field)
Definition: c_wrapper.cpp:497
ID3_C_EXPORT ID3_FrameID CCONV ID3Frame_GetID(const ID3Frame *frame)
Definition: c_wrapper.cpp:434
ID3_C_EXPORT void CCONV ID3Frame_SetID(ID3Frame *frame, ID3_FrameID id)
Definition: c_wrapper.cpp:424
ID3_C_EXPORT void CCONV ID3Tag_SetUnsync(ID3Tag *tag, bool unsync)
Definition: c_wrapper.cpp:90
ID3_C_EXPORT size_t CCONV ID3Field_GetNumTextItems(const ID3Field *field)
Definition: c_wrapper.cpp:511
ID3_C_EXPORT ID3_Err CCONV ID3Tag_UpdateByTagType(ID3Tag *tag, flags_t tag_type)
Definition: c_wrapper.cpp:211
ID3_C_EXPORT void CCONV ID3Field_SetBINARY(ID3Field *field, const uchar *data, size_t size)
Definition: c_wrapper.cpp:646
ID3_C_EXPORT void CCONV ID3Frame_Clear(ID3Frame *frame)
Definition: c_wrapper.cpp:414
ID3_C_EXPORT size_t CCONV ID3Field_GetASCII(const ID3Field *field, char *buffer, size_t maxChars)
Definition: c_wrapper.cpp:608
ID3_C_EXPORT size_t CCONV ID3Tag_NumFrames(const ID3Tag *tag)
Definition: c_wrapper.cpp:293
ID3_C_EXPORT ID3Frame *CCONV ID3Frame_New(void)
Definition: c_wrapper.cpp:388
ID3_C_EXPORT ID3Frame *CCONV ID3TagIterator_GetNext(ID3TagIterator *iter)
Definition: c_wrapper.cpp:355
ID3_C_EXPORT ID3_Err CCONV ID3Tag_Parse(ID3Tag *tag, const uchar header[ID3_TAGHEADERSIZE], const uchar *buffer)
Definition: c_wrapper.cpp:163
ID3_C_EXPORT size_t CCONV ID3Field_GetUNICODE(const ID3Field *field, unicode_t *buffer, size_t maxChars)
Definition: c_wrapper.cpp:559
ID3_C_EXPORT const ID3Frame *CCONV ID3TagConstIterator_GetNext(ID3TagConstIterator *iter)
Definition: c_wrapper.cpp:375
ID3_C_EXPORT void CCONV ID3Frame_SetCompression(ID3Frame *frame, bool comp)
Definition: c_wrapper.cpp:462
ID3_C_EXPORT ID3Frame *CCONV ID3Tag_FindFrameWithINT(const ID3Tag *tag, ID3_FrameID id, ID3_FieldID fld, uint32 data)
Definition: c_wrapper.cpp:248
ID3_C_EXPORT ID3TagIterator *CCONV ID3Tag_CreateIterator(ID3Tag *tag)
Definition: c_wrapper.cpp:320
ID3_C_EXPORT ID3_Err CCONV ID3Tag_Strip(ID3Tag *tag, flags_t ulTagFlags)
Definition: c_wrapper.cpp:223
ID3_C_EXPORT size_t CCONV ID3Tag_LinkWithFlags(ID3Tag *tag, const char *fileName, flags_t flags)
Definition: c_wrapper.cpp:187
ID3_C_EXPORT void CCONV ID3Field_AddUNICODE(ID3Field *field, const unicode_t *string)
Definition: c_wrapper.cpp:588
ID3_C_EXPORT uint32 CCONV ID3Field_GetINT(const ID3Field *field)
Definition: c_wrapper.cpp:535
ID3_C_EXPORT bool CCONV ID3Tag_HasChanged(const ID3Tag *tag)
Definition: c_wrapper.cpp:76
ID3_C_EXPORT void CCONV ID3Field_ToFile(const ID3Field *field, const char *fileName)
Definition: c_wrapper.cpp:676
ID3_C_EXPORT void CCONV ID3Tag_Clear(ID3Tag *tag)
Definition: c_wrapper.cpp:66
ID3_C_EXPORT bool CCONV ID3Field_SetEncoding(ID3Field *field, ID3_TextEnc enc)
Definition: c_wrapper.cpp:685
ID3_C_EXPORT void CCONV ID3Field_AddASCII(ID3Field *field, const char *string)
Definition: c_wrapper.cpp:636
ID3_C_EXPORT void CCONV ID3TagIterator_Delete(ID3TagIterator *iter)
Definition: c_wrapper.cpp:346
ID3_C_EXPORT ID3Frame *CCONV ID3Tag_FindFrameWithASCII(const ID3Tag *tag, ID3_FrameID id, ID3_FieldID fld, const char *data)
Definition: c_wrapper.cpp:263
ID3_C_EXPORT void CCONV ID3Tag_AddFrames(ID3Tag *tag, const ID3Frame *frames, size_t num)
Definition: c_wrapper.cpp:141
ID3_C_EXPORT void CCONV ID3Field_SetINT(ID3Field *field, uint32 data)
Definition: c_wrapper.cpp:525
ID3_C_EXPORT void CCONV ID3Field_SetUNICODE(ID3Field *field, const unicode_t *string)
Definition: c_wrapper.cpp:549
ID3_C_EXPORT void CCONV ID3Field_Clear(ID3Field *field)
Definition: c_wrapper.cpp:487
ID3_C_EXPORT void CCONV ID3TagConstIterator_Delete(ID3TagConstIterator *iter)
Definition: c_wrapper.cpp:366
ID3_C_EXPORT bool CCONV ID3Tag_HasTagType(const ID3Tag *tag, ID3_TagType tt)
Definition: c_wrapper.cpp:307
ID3_C_EXPORT size_t CCONV ID3Field_GetUNICODEItem(const ID3Field *field, unicode_t *buffer, size_t maxChars, size_t itemNum)
Definition: c_wrapper.cpp:573
ID3_C_EXPORT ID3_TextEnc CCONV ID3Field_GetEncoding(const ID3Field *field)
Definition: c_wrapper.cpp:696
ID3_C_EXPORT void CCONV ID3Tag_SetPadding(ID3Tag *tag, bool pad)
Definition: c_wrapper.cpp:109
ID3_C_EXPORT size_t CCONV ID3Tag_Link(ID3Tag *tag, const char *fileName)
Definition: c_wrapper.cpp:176
ID3_C_EXPORT ID3Frame *CCONV ID3Tag_FindFrameWithUNICODE(const ID3Tag *tag, ID3_FrameID id, ID3_FieldID fld, const unicode_t *data)
Definition: c_wrapper.cpp:278
ID3_C_EXPORT bool CCONV ID3Field_IsEncodable(const ID3Field *field)
Definition: c_wrapper.cpp:707
ID3_C_EXPORT void CCONV ID3Field_GetBINARY(const ID3Field *field, uchar *buffer, size_t buffLength)
Definition: c_wrapper.cpp:656
ID3_C_EXPORT ID3Field *CCONV ID3Frame_GetField(const ID3Frame *frame, ID3_FieldID name)
Definition: c_wrapper.cpp:448
ID3_C_EXPORT void CCONV ID3Tag_Delete(ID3Tag *tag)
Definition: c_wrapper.cpp:56
ID3_C_EXPORT void CCONV ID3Frame_Delete(ID3Frame *frame)
Definition: c_wrapper.cpp:404
#define ID3_CATCH(code)
Definition: c_wrapper.cpp:44
ID3_C_EXPORT ID3TagConstIterator *CCONV ID3Tag_CreateConstIterator(const ID3Tag *tag)
Definition: c_wrapper.cpp:333
The representative class of an ID3v2 field.
Definition: field.h:37
The representative class of an id3v2 frame.
The representative class of an id3 tag.
Definition: tag.h:42
#define NULL
Definition: globals.h:743
ID3_Err
Predefined id3lib error types.
Definition: globals.h:364
@ ID3E_NoError
No error reported.
Definition: globals.h:365
ID3_FieldID
Enumeration of the different types of fields in a frame.
Definition: globals.h:198
ID3_TextEnc
Enumeration of the types of text encodings: ascii or unicode.
Definition: globals.h:138
@ ID3TE_NONE
Definition: globals.h:139
ID3_TagType
The various types of tags that id3lib can handle.
Definition: globals.h:175
#define ID3_C_EXPORT
This file defines common macros, types, constants, and enums used throughout id3lib.
Definition: globals.h:78
unsigned char uchar
Definition: globals.h:114
uint16 unicode_t
Definition: globals.h:117
ID3_FrameID
Enumeration of the different types of frames recognized by id3lib.
Definition: globals.h:230
@ ID3FID_NOFRAME
No known frame.
Definition: globals.h:231
#define CCONV
Definition: globals.h:80
uint16 flags_t
Definition: globals.h:118
#define ID3_TAGHEADERSIZE
Definition: globals.h:104