@@ -441,6 +441,140 @@ constexpr uint8_t PATH_PERCENT_ENCODE[32] = {
441
441
// F8 F9 FA FB FC FD FE FF
442
442
0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 };
443
443
444
+
445
+ constexpr uint8_t COMPONENT_PERCENT_ENCODE[32 ] = {
446
+ // 00 01 02 03 04 05 06 07
447
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
448
+ // 08 09 0A 0B 0C 0D 0E 0F
449
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
450
+ // 10 11 12 13 14 15 16 17
451
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
452
+ // 18 19 1A 1B 1C 1D 1E 1F
453
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
454
+ // 20 21 22 23 24 25 26 27
455
+ 0x01 | 0x00 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x00 ,
456
+ // 28 29 2A 2B 2C 2D 2E 2F
457
+ 0x00 | 0x00 | 0x00 | 0x08 | 0x10 | 0x00 | 0x00 | 0x00 ,
458
+ // 30 31 32 33 34 35 36 37
459
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
460
+ // 38 39 3A 3B 3C 3D 3E 3F
461
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x80 ,
462
+ // 40 41 42 43 44 45 46 47
463
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
464
+ // 48 49 4A 4B 4C 4D 4E 4F
465
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
466
+ // 50 51 52 53 54 55 56 57
467
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
468
+ // 58 59 5A 5B 5C 5D 5E 5F
469
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
470
+ // 60 61 62 63 64 65 66 67
471
+ 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
472
+ // 68 69 6A 6B 6C 6D 6E 6F
473
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
474
+ // 70 71 72 73 74 75 76 77
475
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
476
+ // 78 79 7A 7B 7C 7D 7E 7F
477
+ 0x00 | 0x00 | 0x00 | 0x08 | 0x00 | 0x20 | 0x00 | 0x80 ,
478
+ // 80 81 82 83 84 85 86 87
479
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
480
+ // 88 89 8A 8B 8C 8D 8E 8F
481
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
482
+ // 90 91 92 93 94 95 96 97
483
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
484
+ // 98 99 9A 9B 9C 9D 9E 9F
485
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
486
+ // A0 A1 A2 A3 A4 A5 A6 A7
487
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
488
+ // A8 A9 AA AB AC AD AE AF
489
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
490
+ // B0 B1 B2 B3 B4 B5 B6 B7
491
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
492
+ // B8 B9 BA BB BC BD BE BF
493
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
494
+ // C0 C1 C2 C3 C4 C5 C6 C7
495
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
496
+ // C8 C9 CA CB CC CD CE CF
497
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
498
+ // D0 D1 D2 D3 D4 D5 D6 D7
499
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
500
+ // D8 D9 DA DB DC DD DE DF
501
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
502
+ // E0 E1 E2 E3 E4 E5 E6 E7
503
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
504
+ // E8 E9 EA EB EC ED EE EF
505
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
506
+ // F0 F1 F2 F3 F4 F5 F6 F7
507
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
508
+ // F8 F9 FA FB FC FD FE FF
509
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 };
510
+
511
+
512
+ constexpr uint8_t WWW_FORM_URLENCODED_PERCENT_ENCODE[32 ] = {
513
+ // 00 01 02 03 04 05 06 07
514
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
515
+ // 08 09 0A 0B 0C 0D 0E 0F
516
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
517
+ // 10 11 12 13 14 15 16 17
518
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
519
+ // 18 19 1A 1B 1C 1D 1E 1F
520
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
521
+ // 20 21 22 23 24 25 26 27
522
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
523
+ // 28 29 2A 2B 2C 2D 2E 2F
524
+ 0x01 | 0x02 | 0x00 | 0x08 | 0x10 | 0x00 | 0x00 | 0x00 ,
525
+ // 30 31 32 33 34 35 36 37
526
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
527
+ // 38 39 3A 3B 3C 3D 3E 3F
528
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x80 ,
529
+ // 40 41 42 43 44 45 46 47
530
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
531
+ // 48 49 4A 4B 4C 4D 4E 4F
532
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
533
+ // 50 51 52 53 54 55 56 57
534
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
535
+ // 58 59 5A 5B 5C 5D 5E 5F
536
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
537
+ // 60 61 62 63 64 65 66 67
538
+ 0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
539
+ // 68 69 6A 6B 6C 6D 6E 6F
540
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
541
+ // 70 71 72 73 74 75 76 77
542
+ 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 ,
543
+ // 78 79 7A 7B 7C 7D 7E 7F
544
+ 0x00 | 0x00 | 0x00 | 0x08 | 0x00 | 0x20 | 0x40 | 0x80 ,
545
+ // 80 81 82 83 84 85 86 87
546
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
547
+ // 88 89 8A 8B 8C 8D 8E 8F
548
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
549
+ // 90 91 92 93 94 95 96 97
550
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
551
+ // 98 99 9A 9B 9C 9D 9E 9F
552
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
553
+ // A0 A1 A2 A3 A4 A5 A6 A7
554
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
555
+ // A8 A9 AA AB AC AD AE AF
556
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
557
+ // B0 B1 B2 B3 B4 B5 B6 B7
558
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
559
+ // B8 B9 BA BB BC BD BE BF
560
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
561
+ // C0 C1 C2 C3 C4 C5 C6 C7
562
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
563
+ // C8 C9 CA CB CC CD CE CF
564
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
565
+ // D0 D1 D2 D3 D4 D5 D6 D7
566
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
567
+ // D8 D9 DA DB DC DD DE DF
568
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
569
+ // E0 E1 E2 E3 E4 E5 E6 E7
570
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
571
+ // E8 E9 EA EB EC ED EE EF
572
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
573
+ // F0 F1 F2 F3 F4 F5 F6 F7
574
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 ,
575
+ // F8 F9 FA FB FC FD FE FF
576
+ 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80 };
577
+
444
578
ada_really_inline bool bit_at (const uint8_t a[], const uint8_t i) {
445
579
return !!(a[i >> 3 ] & (1 << (i & 7 )));
446
580
}
0 commit comments