Line data Source code
1 : /*
2 : * Package : Cbor
3 : * Author : S. Hamblett <steve.hamblett@linux.com>
4 : * Date : 12/12/2016
5 : * Copyright : S.Hamblett
6 : */
7 :
8 : part of cbor;
9 :
10 : /// Constants for use across the CBOR package.
11 :
12 : /// CBOR decoding constants
13 : const int majorTypeShift = 5;
14 : const int minorTypeMask = 31;
15 :
16 : /// Major type constants
17 : const int majorTypePint = 0;
18 : const int majorTypeNint = 1;
19 : const int majorTypeBytes = 2;
20 : const int majorTypeString = 3;
21 : const int majorTypeArray = 4;
22 : const int majorTypeMap = 5;
23 : const int majorTypeTag = 6;
24 : const int majorTypeSpecial = 7;
25 : const int majorTypeNotSet = -1;
26 :
27 : /// Additional information constants
28 : const int ai20 = 20;
29 : const int ai21 = 21;
30 : const int ai22 = 22;
31 : const int ai23 = 23;
32 : const int ai24 = 24;
33 : const int ai25 = 25;
34 : const int ai26 = 26;
35 : const int ai27 = 27;
36 : const int aiBreak = 31;
37 :
38 : /// Numerical constants
39 : final int two8 = pow(2, 8);
40 : final int two16 = pow(2, 16);
41 : final int two32 = pow(2, 32);
42 : final int two64 = pow(2, 64);
43 : const double halfLimitUpper = 65504.0;
44 : const double halfLimitLower = -65504.0;
45 : const double singleLimitUpper = 3.4028234663852886e38;
46 : const double singleLimitLower = -3.4028234663852886e38;
47 : const int simpleLimitUpper = 255;
48 : const int simpleLimitLower = 0;
49 :
50 : /// Half precision mapping tables
51 : final typed.Uint16Buffer baseTable = new typed.Uint16Buffer();
52 : final List<int> shiftTable = [
53 : 24,
54 : 24,
55 : 24,
56 : 24,
57 : 24,
58 : 24,
59 : 24,
60 : 24,
61 : 24,
62 : 24,
63 : 24,
64 : 24,
65 : 24,
66 : 24,
67 : 24,
68 : 24,
69 : 24,
70 : 24,
71 : 24,
72 : 24,
73 : 24,
74 : 24,
75 : 24,
76 : 24,
77 : 24,
78 : 24,
79 : 24,
80 : 24,
81 : 24,
82 : 24,
83 : 24,
84 : 24,
85 : 24,
86 : 24,
87 : 24,
88 : 24,
89 : 24,
90 : 24,
91 : 24,
92 : 24,
93 : 24,
94 : 24,
95 : 24,
96 : 24,
97 : 24,
98 : 24,
99 : 24,
100 : 24,
101 : 24,
102 : 24,
103 : 24,
104 : 24,
105 : 24,
106 : 24,
107 : 24,
108 : 24,
109 : 24,
110 : 24,
111 : 24,
112 : 24,
113 : 24,
114 : 24,
115 : 24,
116 : 24,
117 : 24,
118 : 24,
119 : 24,
120 : 24,
121 : 24,
122 : 24,
123 : 24,
124 : 24,
125 : 24,
126 : 24,
127 : 24,
128 : 24,
129 : 24,
130 : 24,
131 : 24,
132 : 24,
133 : 24,
134 : 24,
135 : 24,
136 : 24,
137 : 24,
138 : 24,
139 : 24,
140 : 24,
141 : 24,
142 : 24,
143 : 24,
144 : 24,
145 : 24,
146 : 24,
147 : 24,
148 : 24,
149 : 24,
150 : 24,
151 : 24,
152 : 24,
153 : 24,
154 : 24,
155 : 24,
156 : 23,
157 : 22,
158 : 21,
159 : 20,
160 : 19,
161 : 18,
162 : 17,
163 : 16,
164 : 15,
165 : 14,
166 : 13,
167 : 13,
168 : 13,
169 : 13,
170 : 13,
171 : 13,
172 : 13,
173 : 13,
174 : 13,
175 : 13,
176 : 13,
177 : 13,
178 : 13,
179 : 13,
180 : 13,
181 : 13,
182 : 13,
183 : 13,
184 : 13,
185 : 13,
186 : 13,
187 : 13,
188 : 13,
189 : 13,
190 : 13,
191 : 13,
192 : 13,
193 : 13,
194 : 13,
195 : 13,
196 : 24,
197 : 24,
198 : 24,
199 : 24,
200 : 24,
201 : 24,
202 : 24,
203 : 24,
204 : 24,
205 : 24,
206 : 24,
207 : 24,
208 : 24,
209 : 24,
210 : 24,
211 : 24,
212 : 24,
213 : 24,
214 : 24,
215 : 24,
216 : 24,
217 : 24,
218 : 24,
219 : 24,
220 : 24,
221 : 24,
222 : 24,
223 : 24,
224 : 24,
225 : 24,
226 : 24,
227 : 24,
228 : 24,
229 : 24,
230 : 24,
231 : 24,
232 : 24,
233 : 24,
234 : 24,
235 : 24,
236 : 24,
237 : 24,
238 : 24,
239 : 24,
240 : 24,
241 : 24,
242 : 24,
243 : 24,
244 : 24,
245 : 24,
246 : 24,
247 : 24,
248 : 24,
249 : 24,
250 : 24,
251 : 24,
252 : 24,
253 : 24,
254 : 24,
255 : 24,
256 : 24,
257 : 24,
258 : 24,
259 : 24,
260 : 24,
261 : 24,
262 : 24,
263 : 24,
264 : 24,
265 : 24,
266 : 24,
267 : 24,
268 : 24,
269 : 24,
270 : 24,
271 : 24,
272 : 24,
273 : 24,
274 : 24,
275 : 24,
276 : 24,
277 : 24,
278 : 24,
279 : 24,
280 : 24,
281 : 24,
282 : 24,
283 : 24,
284 : 24,
285 : 24,
286 : 24,
287 : 24,
288 : 24,
289 : 24,
290 : 24,
291 : 24,
292 : 24,
293 : 24,
294 : 24,
295 : 24,
296 : 24,
297 : 24,
298 : 24,
299 : 24,
300 : 24,
301 : 24,
302 : 24,
303 : 24,
304 : 24,
305 : 24,
306 : 24,
307 : 24,
308 : 13,
309 : 24,
310 : 24,
311 : 24,
312 : 24,
313 : 24,
314 : 24,
315 : 24,
316 : 24,
317 : 24,
318 : 24,
319 : 24,
320 : 24,
321 : 24,
322 : 24,
323 : 24,
324 : 24,
325 : 24,
326 : 24,
327 : 24,
328 : 24,
329 : 24,
330 : 24,
331 : 24,
332 : 24,
333 : 24,
334 : 24,
335 : 24,
336 : 24,
337 : 24,
338 : 24,
339 : 24,
340 : 24,
341 : 24,
342 : 24,
343 : 24,
344 : 24,
345 : 24,
346 : 24,
347 : 24,
348 : 24,
349 : 24,
350 : 24,
351 : 24,
352 : 24,
353 : 24,
354 : 24,
355 : 24,
356 : 24,
357 : 24,
358 : 24,
359 : 24,
360 : 24,
361 : 24,
362 : 24,
363 : 24,
364 : 24,
365 : 24,
366 : 24,
367 : 24,
368 : 24,
369 : 24,
370 : 24,
371 : 24,
372 : 24,
373 : 24,
374 : 24,
375 : 24,
376 : 24,
377 : 24,
378 : 24,
379 : 24,
380 : 24,
381 : 24,
382 : 24,
383 : 24,
384 : 24,
385 : 24,
386 : 24,
387 : 24,
388 : 24,
389 : 24,
390 : 24,
391 : 24,
392 : 24,
393 : 24,
394 : 24,
395 : 24,
396 : 24,
397 : 24,
398 : 24,
399 : 24,
400 : 24,
401 : 24,
402 : 24,
403 : 24,
404 : 24,
405 : 24,
406 : 24,
407 : 24,
408 : 24,
409 : 24,
410 : 24,
411 : 24,
412 : 23,
413 : 22,
414 : 21,
415 : 20,
416 : 19,
417 : 18,
418 : 17,
419 : 16,
420 : 15,
421 : 14,
422 : 13,
423 : 13,
424 : 13,
425 : 13,
426 : 13,
427 : 13,
428 : 13,
429 : 13,
430 : 13,
431 : 13,
432 : 13,
433 : 13,
434 : 13,
435 : 13,
436 : 13,
437 : 13,
438 : 13,
439 : 13,
440 : 13,
441 : 13,
442 : 13,
443 : 13,
444 : 13,
445 : 13,
446 : 13,
447 : 13,
448 : 13,
449 : 13,
450 : 13,
451 : 13,
452 : 24,
453 : 24,
454 : 24,
455 : 24,
456 : 24,
457 : 24,
458 : 24,
459 : 24,
460 : 24,
461 : 24,
462 : 24,
463 : 24,
464 : 24,
465 : 24,
466 : 24,
467 : 24,
468 : 24,
469 : 24,
470 : 24,
471 : 24,
472 : 24,
473 : 24,
474 : 24,
475 : 24,
476 : 24,
477 : 24,
478 : 24,
479 : 24,
480 : 24,
481 : 24,
482 : 24,
483 : 24,
484 : 24,
485 : 24,
486 : 24,
487 : 24,
488 : 24,
489 : 24,
490 : 24,
491 : 24,
492 : 24,
493 : 24,
494 : 24,
495 : 24,
496 : 24,
497 : 24,
498 : 24,
499 : 24,
500 : 24,
501 : 24,
502 : 24,
503 : 24,
504 : 24,
505 : 24,
506 : 24,
507 : 24,
508 : 24,
509 : 24,
510 : 24,
511 : 24,
512 : 24,
513 : 24,
514 : 24,
515 : 24,
516 : 24,
517 : 24,
518 : 24,
519 : 24,
520 : 24,
521 : 24,
522 : 24,
523 : 24,
524 : 24,
525 : 24,
526 : 24,
527 : 24,
528 : 24,
529 : 24,
530 : 24,
531 : 24,
532 : 24,
533 : 24,
534 : 24,
535 : 24,
536 : 24,
537 : 24,
538 : 24,
539 : 24,
540 : 24,
541 : 24,
542 : 24,
543 : 24,
544 : 24,
545 : 24,
546 : 24,
547 : 24,
548 : 24,
549 : 24,
550 : 24,
551 : 24,
552 : 24,
553 : 24,
554 : 24,
555 : 24,
556 : 24,
557 : 24,
558 : 24,
559 : 24,
560 : 24,
561 : 24,
562 : 24,
563 : 24,
564 : 13
565 : ];
566 :
567 : void init() {
568 9 : baseTable.addAll([
569 : 0x0000,
570 : 0x0000,
571 : 0x0000,
572 : 0x0000,
573 : 0x0000,
574 : 0x0000,
575 : 0x0000,
576 : 0x0000,
577 : 0x0000,
578 : 0x0000,
579 : 0x0000,
580 : 0x0000,
581 : 0x0000,
582 : 0x0000,
583 : 0x0000,
584 : 0x0000,
585 : 0x0000,
586 : 0x0000,
587 : 0x0000,
588 : 0x0000,
589 : 0x0000,
590 : 0x0000,
591 : 0x0000,
592 : 0x0000,
593 : 0x0000,
594 : 0x0000,
595 : 0x0000,
596 : 0x0000,
597 : 0x0000,
598 : 0x0000,
599 : 0x0000,
600 : 0x0000,
601 : 0x0000,
602 : 0x0000,
603 : 0x0000,
604 : 0x0000,
605 : 0x0000,
606 : 0x0000,
607 : 0x0000,
608 : 0x0000,
609 : 0x0000,
610 : 0x0000,
611 : 0x0000,
612 : 0x0000,
613 : 0x0000,
614 : 0x0000,
615 : 0x0000,
616 : 0x0000,
617 : 0x0000,
618 : 0x0000,
619 : 0x0000,
620 : 0x0000,
621 : 0x0000,
622 : 0x0000,
623 : 0x0000,
624 : 0x0000,
625 : 0x0000,
626 : 0x0000,
627 : 0x0000,
628 : 0x0000,
629 : 0x0000,
630 : 0x0000,
631 : 0x0000,
632 : 0x0000,
633 : 0x0000,
634 : 0x0000,
635 : 0x0000,
636 : 0x0000,
637 : 0x0000,
638 : 0x0000,
639 : 0x0000,
640 : 0x0000,
641 : 0x0000,
642 : 0x0000,
643 : 0x0000,
644 : 0x0000,
645 : 0x0000,
646 : 0x0000,
647 : 0x0000,
648 : 0x0000,
649 : 0x0000,
650 : 0x0000,
651 : 0x0000,
652 : 0x0000,
653 : 0x0000,
654 : 0x0000,
655 : 0x0000,
656 : 0x0000,
657 : 0x0000,
658 : 0x0000,
659 : 0x0000,
660 : 0x0000,
661 : 0x0000,
662 : 0x0000,
663 : 0x0000,
664 : 0x0000,
665 : 0x0000,
666 : 0x0000,
667 : 0x0000,
668 : 0x0000,
669 : 0x0000,
670 : 0x0000,
671 : 0x0000,
672 : 0x0001,
673 : 0x0002,
674 : 0x0004,
675 : 0x0008,
676 : 0x0010,
677 : 0x0020,
678 : 0x0040,
679 : 0x0080,
680 : 0x0100,
681 : 0x0200,
682 : 0x0400,
683 : 0x0800,
684 : 0x0C00,
685 : 0x1000,
686 : 0x1400,
687 : 0x1800,
688 : 0x1C00,
689 : 0x2000,
690 : 0x2400,
691 : 0x2800,
692 : 0x2C00,
693 : 0x3000,
694 : 0x3400,
695 : 0x3800,
696 : 0x3C00,
697 : 0x4000,
698 : 0x4400,
699 : 0x4800,
700 : 0x4C00,
701 : 0x5000,
702 : 0x5400,
703 : 0x5800,
704 : 0x5C00,
705 : 0x6000,
706 : 0x6400,
707 : 0x6800,
708 : 0x6C00,
709 : 0x7000,
710 : 0x7400,
711 : 0x7800,
712 : 0x7C00,
713 : 0x7C00,
714 : 0x7C00,
715 : 0x7C00,
716 : 0x7C00,
717 : 0x7C00,
718 : 0x7C00,
719 : 0x7C00,
720 : 0x7C00,
721 : 0x7C00,
722 : 0x7C00,
723 : 0x7C00,
724 : 0x7C00,
725 : 0x7C00,
726 : 0x7C00,
727 : 0x7C00,
728 : 0x7C00,
729 : 0x7C00,
730 : 0x7C00,
731 : 0x7C00,
732 : 0x7C00,
733 : 0x7C00,
734 : 0x7C00,
735 : 0x7C00,
736 : 0x7C00,
737 : 0x7C00,
738 : 0x7C00,
739 : 0x7C00,
740 : 0x7C00,
741 : 0x7C00,
742 : 0x7C00,
743 : 0x7C00,
744 : 0x7C00,
745 : 0x7C00,
746 : 0x7C00,
747 : 0x7C00,
748 : 0x7C00,
749 : 0x7C00,
750 : 0x7C00,
751 : 0x7C00,
752 : 0x7C00,
753 : 0x7C00,
754 : 0x7C00,
755 : 0x7C00,
756 : 0x7C00,
757 : 0x7C00,
758 : 0x7C00,
759 : 0x7C00,
760 : 0x7C00,
761 : 0x7C00,
762 : 0x7C00,
763 : 0x7C00,
764 : 0x7C00,
765 : 0x7C00,
766 : 0x7C00,
767 : 0x7C00,
768 : 0x7C00,
769 : 0x7C00,
770 : 0x7C00,
771 : 0x7C00,
772 : 0x7C00,
773 : 0x7C00,
774 : 0x7C00,
775 : 0x7C00,
776 : 0x7C00,
777 : 0x7C00,
778 : 0x7C00,
779 : 0x7C00,
780 : 0x7C00,
781 : 0x7C00,
782 : 0x7C00,
783 : 0x7C00,
784 : 0x7C00,
785 : 0x7C00,
786 : 0x7C00,
787 : 0x7C00,
788 : 0x7C00,
789 : 0x7C00,
790 : 0x7C00,
791 : 0x7C00,
792 : 0x7C00,
793 : 0x7C00,
794 : 0x7C00,
795 : 0x7C00,
796 : 0x7C00,
797 : 0x7C00,
798 : 0x7C00,
799 : 0x7C00,
800 : 0x7C00,
801 : 0x7C00,
802 : 0x7C00,
803 : 0x7C00,
804 : 0x7C00,
805 : 0x7C00,
806 : 0x7C00,
807 : 0x7C00,
808 : 0x7C00,
809 : 0x7C00,
810 : 0x7C00,
811 : 0x7C00,
812 : 0x7C00,
813 : 0x7C00,
814 : 0x7C00,
815 : 0x7C00,
816 : 0x7C00,
817 : 0x7C00,
818 : 0x7C00,
819 : 0x7C00,
820 : 0x7C00,
821 : 0x7C00,
822 : 0x7C00,
823 : 0x7C00,
824 : 0x7C00,
825 : 0x8000,
826 : 0x8000,
827 : 0x8000,
828 : 0x8000,
829 : 0x8000,
830 : 0x8000,
831 : 0x8000,
832 : 0x8000,
833 : 0x8000,
834 : 0x8000,
835 : 0x8000,
836 : 0x8000,
837 : 0x8000,
838 : 0x8000,
839 : 0x8000,
840 : 0x8000,
841 : 0x8000,
842 : 0x8000,
843 : 0x8000,
844 : 0x8000,
845 : 0x8000,
846 : 0x8000,
847 : 0x8000,
848 : 0x8000,
849 : 0x8000,
850 : 0x8000,
851 : 0x8000,
852 : 0x8000,
853 : 0x8000,
854 : 0x8000,
855 : 0x8000,
856 : 0x8000,
857 : 0x8000,
858 : 0x8000,
859 : 0x8000,
860 : 0x8000,
861 : 0x8000,
862 : 0x8000,
863 : 0x8000,
864 : 0x8000,
865 : 0x8000,
866 : 0x8000,
867 : 0x8000,
868 : 0x8000,
869 : 0x8000,
870 : 0x8000,
871 : 0x8000,
872 : 0x8000,
873 : 0x8000,
874 : 0x8000,
875 : 0x8000,
876 : 0x8000,
877 : 0x8000,
878 : 0x8000,
879 : 0x8000,
880 : 0x8000,
881 : 0x8000,
882 : 0x8000,
883 : 0x8000,
884 : 0x8000,
885 : 0x8000,
886 : 0x8000,
887 : 0x8000,
888 : 0x8000,
889 : 0x8000,
890 : 0x8000,
891 : 0x8000,
892 : 0x8000,
893 : 0x8000,
894 : 0x8000,
895 : 0x8000,
896 : 0x8000,
897 : 0x8000,
898 : 0x8000,
899 : 0x8000,
900 : 0x8000,
901 : 0x8000,
902 : 0x8000,
903 : 0x8000,
904 : 0x8000,
905 : 0x8000,
906 : 0x8000,
907 : 0x8000,
908 : 0x8000,
909 : 0x8000,
910 : 0x8000,
911 : 0x8000,
912 : 0x8000,
913 : 0x8000,
914 : 0x8000,
915 : 0x8000,
916 : 0x8000,
917 : 0x8000,
918 : 0x8000,
919 : 0x8000,
920 : 0x8000,
921 : 0x8000,
922 : 0x8000,
923 : 0x8000,
924 : 0x8000,
925 : 0x8000,
926 : 0x8000,
927 : 0x8000,
928 : 0x8001,
929 : 0x8002,
930 : 0x8004,
931 : 0x8008,
932 : 0x8010,
933 : 0x8020,
934 : 0x8040,
935 : 0x8080,
936 : 0x8100,
937 : 0x8200,
938 : 0x8400,
939 : 0x8800,
940 : 0x8C00,
941 : 0x9000,
942 : 0x9400,
943 : 0x9800,
944 : 0x9C00,
945 : 0xA000,
946 : 0xA400,
947 : 0xA800,
948 : 0xAC00,
949 : 0xB000,
950 : 0xB400,
951 : 0xB800,
952 : 0xBC00,
953 : 0xC000,
954 : 0xC400,
955 : 0xC800,
956 : 0xCC00,
957 : 0xD000,
958 : 0xD400,
959 : 0xD800,
960 : 0xDC00,
961 : 0xE000,
962 : 0xE400,
963 : 0xE800,
964 : 0xEC00,
965 : 0xF000,
966 : 0xF400,
967 : 0xF800,
968 : 0xFC00,
969 : 0xFC00,
970 : 0xFC00,
971 : 0xFC00,
972 : 0xFC00,
973 : 0xFC00,
974 : 0xFC00,
975 : 0xFC00,
976 : 0xFC00,
977 : 0xFC00,
978 : 0xFC00,
979 : 0xFC00,
980 : 0xFC00,
981 : 0xFC00,
982 : 0xFC00,
983 : 0xFC00,
984 : 0xFC00,
985 : 0xFC00,
986 : 0xFC00,
987 : 0xFC00,
988 : 0xFC00,
989 : 0xFC00,
990 : 0xFC00,
991 : 0xFC00,
992 : 0xFC00,
993 : 0xFC00,
994 : 0xFC00,
995 : 0xFC00,
996 : 0xFC00,
997 : 0xFC00,
998 : 0xFC00,
999 : 0xFC00,
1000 : 0xFC00,
1001 : 0xFC00,
1002 : 0xFC00,
1003 : 0xFC00,
1004 : 0xFC00,
1005 : 0xFC00,
1006 : 0xFC00,
1007 : 0xFC00,
1008 : 0xFC00,
1009 : 0xFC00,
1010 : 0xFC00,
1011 : 0xFC00,
1012 : 0xFC00,
1013 : 0xFC00,
1014 : 0xFC00,
1015 : 0xFC00,
1016 : 0xFC00,
1017 : 0xFC00,
1018 : 0xFC00,
1019 : 0xFC00,
1020 : 0xFC00,
1021 : 0xFC00,
1022 : 0xFC00,
1023 : 0xFC00,
1024 : 0xFC00,
1025 : 0xFC00,
1026 : 0xFC00,
1027 : 0xFC00,
1028 : 0xFC00,
1029 : 0xFC00,
1030 : 0xFC00,
1031 : 0xFC00,
1032 : 0xFC00,
1033 : 0xFC00,
1034 : 0xFC00,
1035 : 0xFC00,
1036 : 0xFC00,
1037 : 0xFC00,
1038 : 0xFC00,
1039 : 0xFC00,
1040 : 0xFC00,
1041 : 0xFC00,
1042 : 0xFC00,
1043 : 0xFC00,
1044 : 0xFC00,
1045 : 0xFC00,
1046 : 0xFC00,
1047 : 0xFC00,
1048 : 0xFC00,
1049 : 0xFC00,
1050 : 0xFC00,
1051 : 0xFC00,
1052 : 0xFC00,
1053 : 0xFC00,
1054 : 0xFC00,
1055 : 0xFC00,
1056 : 0xFC00,
1057 : 0xFC00,
1058 : 0xFC00,
1059 : 0xFC00,
1060 : 0xFC00,
1061 : 0xFC00,
1062 : 0xFC00,
1063 : 0xFC00,
1064 : 0xFC00,
1065 : 0xFC00,
1066 : 0xFC00,
1067 : 0xFC00,
1068 : 0xFC00,
1069 : 0xFC00,
1070 : 0xFC00,
1071 : 0xFC00,
1072 : 0xFC00,
1073 : 0xFC00,
1074 : 0xFC00,
1075 : 0xFC00,
1076 : 0xFC00,
1077 : 0xFC00,
1078 : 0xFC00,
1079 : 0xFC00,
1080 : 0xFC00
1081 : ]);
1082 : }
1083 :
1084 : /// Indefinite array/map size limit.
1085 : /// Indefinite arrays and maps are just normal
1086 : /// arrays and maps with an initially unknown size,
1087 : /// we can't model this so just set the initial size to
1088 : /// this arbitrarily high number.
1089 :
1090 : const int indefiniteMaxSize = 100000;
1091 :
1092 : /// Indefinite stack types and stop marker.
1093 : const String indefStop = "stop";
1094 : const String indefBytes = "bytes";
1095 : const String indefString = "string";
1096 : const String indefArray = "array";
1097 : const String indefMap = "map";
|