384{
385 size_t __6_OR_10__ =
__tag.version() == 2 ? 6 : 10;
386
387
389 char FIRST = *_begin;
390 if (
__tag.version() == 2) {
393 }
394 else {
395
400 }
401
402#define __IF_ENCODING__ \
403 if (_begin < _end) { \
404 __encoding = *_begin++; \
405 }
406#define __IF_LANGUAGE__ \
407 if (_begin + 3 < _end && __valid_language_code(_begin)) { \
408 __url = AsciiDecoder::decode(_begin, 3).trim(); \
409 _begin += 3; \
410 }
411#define __IF_DESCRIPTION__ \
412 if (_begin < _end) { \
413 size_t n = __decode_length__(__encoding, _begin, _end - _begin); \
414 __description = decode(__encoding, _begin, n).trim(); \
415 _begin += __skip_length__(__encoding, n); \
416 }
417#define __IF_TEXT__ \
418 if (_begin < _end) { \
419 size_t n = __decode_length__(__encoding, _begin, _end - _begin); \
420 __text = decode(__encoding, _begin, n).trim(); \
421 _begin += __skip_length__(__encoding, n); \
422 }
423#define __IF_URL__ \
424 if (_begin < _end) { \
425 size_t n = ByteString::length(_begin, _end - _begin); \
426 __url = decode(0, _begin, n).trim(); \
427 _begin += n + 1; \
428 }
429#define __IF_TYPE__ \
430 if (_begin < _end) { \
431 __type = *_begin++; \
432 }
433#define __IF_BINARY__ \
434 if (_begin < _end) { \
435 __binary.assign(_begin, _end - _begin); \
436 }
437
438 _begin += __6_OR_10__;
440 switch (FIRST) {
441 default: {
442
443
444
445
446
447
448
449
450
451
452
453
454
455
460 break;
461 }
462 case 'A': {
463 if (
__id == L
"AENC") {
466 }
467 else if (
__id == L
"APIC") {
468 uint32_t dataLength = 0;
470 dataLength =
word(_begin, 4);
471 _begin += 4;
472 }
474 dataLength, String::tryString(_begin,
__size, 40).data());
479 if (_begin < _end) {
481 dataLength > 0 ? dataLength : _end - _begin);
482 }
483 }
484 else {
485
487 }
488 break;
489 }
490 case 'C': {
491 if (
__id == L
"COMM" ||
__id == L
"COM") {
496 }
497 else if (
__id == L
"CRA") {
500 }
501 else {
502
504 }
505 break;
506 }
507 case 'G': {
508 if (
__id == L
"GEOB" ||
__id == L
"GEO") {
514 }
515 else {
516
518 }
519 break;
520 }
521 case 'P': {
522 if (
__id == L
"PIC") {
524 if (_begin < _end) {
526 _begin += 3;
527 }
531 }
532 else if (
__id == L
"PRIV") {
535 }
536 else {
537
538
539
541 }
542 break;
543 }
544 case 'I': {
545 if (
__id.compare(L
"IPL", 3) != 0) {
547 break;
548 }
549
550 }
551 case 'T': {
553 if (
__id.compare(L
"TXX", 3) == 0) {
555 }
557 break;
558 }
559 case 'U': {
560
561 if (
__id.compare(L
"UFI", 3) == 0) {
563 if (_begin < _end) {
564
565 size_t n = _end - _begin;
569 }
570 }
571 break;
572 }
575
576 if (
__id == L
"USLT" ||
__id == L
"ULT") {
578 }
580 break;
581 }
582 case 'W': {
583 if (
__id.compare(L
"WXX", 3)) {
586 }
588 break;
589 }
590 }
591
592
593 return __size + __6_OR_10__;
594}
#define __DCL_TRACE1_N(fmt, arg)
#define __DCL_TRACE3_N(fmt, arg1, arg2, arg3)
#define __IF_DESCRIPTION__
#define __DCL_TRACE4_N(fmt, arg1, arg2, arg3, arg4)
#define __DCL_ASSERT(expr)
void CharsetConvertException *size_t n
static String decode(const char *_mbs, size_t _mbslen=(size_t) -1)
uint32_t word(const char *_bytes, size_t _n)
size_t __MIN(size_t x, size_t y)