OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
| 5 // TODO(zra): Rewrite MojoDecoder and MojoEncoder using Dart idioms, and make |
| 6 // corresponding changes to the bindings generation script. |
| 7 |
5 part of bindings; | 8 part of bindings; |
6 | 9 |
7 const int kAlignment = 8; | 10 const int kAlignment = 8; |
8 const int kArrayHeaderSize = 8; | 11 const int kArrayHeaderSize = 8; |
9 const int kStructHeaderSize = 8; | 12 const int kStructHeaderSize = 8; |
10 const int kMessageHeaderSize = 16; | 13 const int kMessageHeaderSize = 16; |
11 const int kMessageWithRequestIDHeaderSize = 24; | 14 const int kMessageWithRequestIDHeaderSize = 24; |
12 const int kMapStructPayloadSize = 16; | 15 const int kMapStructPayloadSize = 16; |
13 const int kStructHeaderNumBytesOffset = 0; | 16 const int kStructHeaderNumBytesOffset = 0; |
14 const int kStructHeaderNumFieldsOffset = 4; | 17 const int kStructHeaderNumFieldsOffset = 4; |
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 if (num_fields >= 3) { | 559 if (num_fields >= 3) { |
557 requestID = decoder.readUint64(); | 560 requestID = decoder.readUint64(); |
558 } | 561 } |
559 decoder.skip(messageHeaderSize - decoder.next); | 562 decoder.skip(messageHeaderSize - decoder.next); |
560 } | 563 } |
561 | 564 |
562 Object decodeStruct(Object t) => _callDecode(t, decoder); | 565 Object decodeStruct(Object t) => _callDecode(t, decoder); |
563 } | 566 } |
564 | 567 |
565 | 568 |
566 abstract class MojoType<T> { | |
567 static const int encodedSize = 0; | |
568 static T decode(MojoDecoder decoder) { return null; } | |
569 static void encode(MojoEncoder encoder, T val) {} | |
570 } | |
571 | |
572 | |
573 class PackedBool {} | 569 class PackedBool {} |
574 | 570 |
575 | 571 |
576 class Int8 implements MojoType<int> { | 572 class Int8 { |
577 static const int encodedSize = 1; | 573 static const int encodedSize = 1; |
578 static int decode(MojoDecoder decoder) => decoder.readInt8(); | 574 static int decode(MojoDecoder decoder) => decoder.readInt8(); |
579 static void encode(MojoEncoder encoder, int val) { | 575 static void encode(MojoEncoder encoder, int val) { |
580 encoder.writeInt8(val); | 576 encoder.writeInt8(val); |
581 } | 577 } |
582 } | 578 } |
583 | 579 |
584 | 580 |
585 class Uint8 implements MojoType<int> { | 581 class Uint8 { |
586 static const int encodedSize = 1; | 582 static const int encodedSize = 1; |
587 static int decode(MojoDecoder decoder) => decoder.readUint8(); | 583 static int decode(MojoDecoder decoder) => decoder.readUint8(); |
588 static void encode(MojoEncoder encoder, int val) { | 584 static void encode(MojoEncoder encoder, int val) { |
589 encoder.writeUint8(val); | 585 encoder.writeUint8(val); |
590 } | 586 } |
591 } | 587 } |
592 | 588 |
593 | 589 |
594 class Int16 implements MojoType<int> { | 590 class Int16 { |
595 static const int encodedSize = 2; | 591 static const int encodedSize = 2; |
596 static int decode(MojoDecoder decoder) => decoder.readInt16(); | 592 static int decode(MojoDecoder decoder) => decoder.readInt16(); |
597 static void encode(MojoEncoder encoder, int val) { | 593 static void encode(MojoEncoder encoder, int val) { |
598 encoder.writeInt16(val); | 594 encoder.writeInt16(val); |
599 } | 595 } |
600 } | 596 } |
601 | 597 |
602 | 598 |
603 class Uint16 implements MojoType<int> { | 599 class Uint16 { |
604 static const int encodedSize = 2; | 600 static const int encodedSize = 2; |
605 static int decode(MojoDecoder decoder) => decoder.readUint16(); | 601 static int decode(MojoDecoder decoder) => decoder.readUint16(); |
606 static void encode(MojoEncoder encoder, int val) { | 602 static void encode(MojoEncoder encoder, int val) { |
607 encoder.writeUint16(val); | 603 encoder.writeUint16(val); |
608 } | 604 } |
609 } | 605 } |
610 | 606 |
611 | 607 |
612 class Int32 implements MojoType<int> { | 608 class Int32 { |
613 static const int encodedSize = 4; | 609 static const int encodedSize = 4; |
614 static int decode(MojoDecoder decoder) => decoder.readInt32(); | 610 static int decode(MojoDecoder decoder) => decoder.readInt32(); |
615 static void encode(MojoEncoder encoder, int val) { | 611 static void encode(MojoEncoder encoder, int val) { |
616 encoder.writeInt32(val); | 612 encoder.writeInt32(val); |
617 } | 613 } |
618 } | 614 } |
619 | 615 |
620 | 616 |
621 class Uint32 implements MojoType<int> { | 617 class Uint32 { |
622 static const int encodedSize = 4; | 618 static const int encodedSize = 4; |
623 static int decode(MojoDecoder decoder) => decoder.readUint32(); | 619 static int decode(MojoDecoder decoder) => decoder.readUint32(); |
624 static void encode(MojoEncoder encoder, int val) { | 620 static void encode(MojoEncoder encoder, int val) { |
625 encoder.writeUint32(val); | 621 encoder.writeUint32(val); |
626 } | 622 } |
627 } | 623 } |
628 | 624 |
629 | 625 |
630 class Int64 implements MojoType<int> { | 626 class Int64 { |
631 static const int encodedSize = 8; | 627 static const int encodedSize = 8; |
632 static int decode(MojoDecoder decoder) => decoder.readInt64(); | 628 static int decode(MojoDecoder decoder) => decoder.readInt64(); |
633 static void encode(MojoEncoder encoder, int val) { | 629 static void encode(MojoEncoder encoder, int val) { |
634 encoder.writeInt64(val); | 630 encoder.writeInt64(val); |
635 } | 631 } |
636 } | 632 } |
637 | 633 |
638 | 634 |
639 class Uint64 implements MojoType<int> { | 635 class Uint64 { |
640 static const int encodedSize = 8; | 636 static const int encodedSize = 8; |
641 static int decode(MojoDecoder decoder) => decoder.readUint64(); | 637 static int decode(MojoDecoder decoder) => decoder.readUint64(); |
642 static void encode(MojoEncoder encoder, int val) { | 638 static void encode(MojoEncoder encoder, int val) { |
643 encoder.writeUint64(val); | 639 encoder.writeUint64(val); |
644 } | 640 } |
645 } | 641 } |
646 | 642 |
647 | 643 |
648 class MojoString implements MojoType<String> { | 644 class MojoString { |
649 static const int encodedSize = 8; | 645 static const int encodedSize = 8; |
650 static String decode(MojoDecoder decoder) => decoder.decodeStringPointer(); | 646 static String decode(MojoDecoder decoder) => decoder.decodeStringPointer(); |
651 static void encode(MojoEncoder encoder, String val) { | 647 static void encode(MojoEncoder encoder, String val) { |
652 encoder.encodeStringPointer(val); | 648 encoder.encodeStringPointer(val); |
653 } | 649 } |
654 } | 650 } |
655 | 651 |
656 | 652 |
657 class NullableMojoString implements MojoType<String> { | 653 class NullableMojoString { |
658 static const int encodedSize = MojoString.encodedSize; | 654 static const int encodedSize = MojoString.encodedSize; |
659 static var decode = MojoString.decode; | 655 static var decode = MojoString.decode; |
660 static var encode = MojoString.encode; | 656 static var encode = MojoString.encode; |
661 } | 657 } |
662 | 658 |
663 | 659 |
664 class Float implements MojoType<double> { | 660 class Float { |
665 static const int encodedSize = 4; | 661 static const int encodedSize = 4; |
666 static double decode(MojoDecoder decoder) => decoder.readFloat(); | 662 static double decode(MojoDecoder decoder) => decoder.readFloat(); |
667 static void encode(MojoEncoder encoder, double val) { | 663 static void encode(MojoEncoder encoder, double val) { |
668 encoder.writeFloat(val); | 664 encoder.writeFloat(val); |
669 } | 665 } |
670 } | 666 } |
671 | 667 |
672 | 668 |
673 class Double implements MojoType<double> { | 669 class Double { |
674 static const int encodedSize = 8; | 670 static const int encodedSize = 8; |
675 static double decode(MojoDecoder decoder) => decoder.readDouble(); | 671 static double decode(MojoDecoder decoder) => decoder.readDouble(); |
676 static void encode(MojoEncoder encoder, double val) { | 672 static void encode(MojoEncoder encoder, double val) { |
677 encoder.writeDouble(val); | 673 encoder.writeDouble(val); |
678 } | 674 } |
679 } | 675 } |
680 | 676 |
681 | 677 |
682 class PointerTo { | 678 class PointerTo { |
683 Object val; | 679 Object val; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
723 encoder.encodeArrayPointer(this.val, val); | 719 encoder.encodeArrayPointer(this.val, val); |
724 } | 720 } |
725 } | 721 } |
726 | 722 |
727 | 723 |
728 class NullableArrayOf extends ArrayOf { | 724 class NullableArrayOf extends ArrayOf { |
729 NullableArrayOf(Object val, [int length = 0]) : super(val, length); | 725 NullableArrayOf(Object val, [int length = 0]) : super(val, length); |
730 } | 726 } |
731 | 727 |
732 | 728 |
733 class Handle implements MojoType<core.RawMojoHandle> { | 729 class Handle { |
734 static const int encodedSize = 4; | 730 static const int encodedSize = 4; |
735 static core.RawMojoHandle decode(MojoDecoder decoder) => decoder.decodeHandle(
); | 731 static core.RawMojoHandle decode(MojoDecoder decoder) => |
| 732 decoder.decodeHandle(); |
736 static void encode(MojoEncoder encoder, core.RawMojoHandle val) { | 733 static void encode(MojoEncoder encoder, core.RawMojoHandle val) { |
737 encoder.encodeHandle(val); | 734 encoder.encodeHandle(val); |
738 } | 735 } |
739 } | 736 } |
740 | 737 |
741 | 738 |
742 class NullableHandle implements MojoType<int> { | 739 class NullableHandle { |
743 static const int encodedSize = Handle.encodedSize; | 740 static const int encodedSize = Handle.encodedSize; |
744 static const decode = Handle.decode; | 741 static const decode = Handle.decode; |
745 static const encode = Handle.encode; | 742 static const encode = Handle.encode; |
746 } | 743 } |
OLD | NEW |