ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CBOR-XS/XS.pm
(Generate patch)

Comparing CBOR-XS/XS.pm (file contents):
Revision 1.76 by root, Tue Dec 1 01:49:47 2020 UTC vs.
Revision 1.77 by root, Fri Dec 4 02:57:14 2020 UTC

729 729
730=item CBOR::XS::as_bytes $value 730=item CBOR::XS::as_bytes $value
731 731
732Forces the value to be encoded as a (binary) string value. 732Forces the value to be encoded as a (binary) string value.
733 733
734Example: encode a perl string as binary even though C<text_strings> is in
735effect.
736
737 CBOR::XS->new->text_strings->encode ([4, "text", CBOR::XS::bytes "bytevalue"]);
738
734=item CBOR::XS::as_bool $value 739=item CBOR::XS::as_bool $value
735 740
736Converts a Perl boolean (which can be any kind of scalar) into a CBOR 741Converts a Perl boolean (which can be any kind of scalar) into a CBOR
737boolean. Strictly the same, but shorter to write, than: 742boolean. Strictly the same, but shorter to write, than:
738 743
748 753
749=item CBOR::XS::as_float64 $value 754=item CBOR::XS::as_float64 $value
750 755
751Forces double-float (IEEE 754 binary64) encoding of the given value. 756Forces double-float (IEEE 754 binary64) encoding of the given value.
752 757
753=item, CBOR::XS::as_cbor $cbor_text 758=item CBOR::XS::as_cbor $cbor_text
754 759
755Bot a type cast per-se, this type cast forces the argument to eb encoded 760Not a type cast per-se, this type cast forces the argument to eb encoded
756as-is. This can be used to embed pre-encoded CBOR data. 761as-is. This can be used to embed pre-encoded CBOR data.
757 762
758Note that no checking on the validity of the C<$cbor_text> is done - it's 763Note that no checking on the validity of the C<$cbor_text> is done - it's
759the callers responsibility to correctly encode values. 764the callers responsibility to correctly encode values.
760 765
766=item CBOR::XS::as_map [key => value...]
767
768Treat the array reference as key value pairs and output a CBOR map. This
769allows you to generate CBOR maps with arbitrary key types (or, if you
770don't care about semantics, duplicate keys or prairs in a custom order),
771which is otherwise hard to do with Perl.
772
773The single argument must be an array reference with an even number of
774elements.
775
776Example: encode a CBOR map with a string and an integer as keys.
777
778 encode_cbor CBOR::XS::as_map [string => "value", 5 => "value"]
779
761=back 780=back
762
763Example: encode a perl string as binary even though C<text_strings> is in
764effect.
765
766 CBOR::XS->new->text_strings->encode ([4, "text", CBOR::XS::bytes "bytevalue"]);
767 781
768=cut 782=cut
769 783
770sub CBOR::XS::as_cbor ($) { bless [$_[0], 0, undef], CBOR::XS::Tagged:: } 784sub CBOR::XS::as_cbor ($) { bless [$_[0], 0, undef], CBOR::XS::Tagged:: }
771sub CBOR::XS::as_int ($) { bless [$_[0], 1, undef], CBOR::XS::Tagged:: } 785sub CBOR::XS::as_int ($) { bless [$_[0], 1, undef], CBOR::XS::Tagged:: }
774sub CBOR::XS::as_float16 ($) { bless [$_[0], 4, undef], CBOR::XS::Tagged:: } 788sub CBOR::XS::as_float16 ($) { bless [$_[0], 4, undef], CBOR::XS::Tagged:: }
775sub CBOR::XS::as_float32 ($) { bless [$_[0], 5, undef], CBOR::XS::Tagged:: } 789sub CBOR::XS::as_float32 ($) { bless [$_[0], 5, undef], CBOR::XS::Tagged:: }
776sub CBOR::XS::as_float64 ($) { bless [$_[0], 6, undef], CBOR::XS::Tagged:: } 790sub CBOR::XS::as_float64 ($) { bless [$_[0], 6, undef], CBOR::XS::Tagged:: }
777 791
778sub CBOR::XS::as_bool ($) { $_[0] ? $Types::Serialiser::true : $Types::Serialiser::false } 792sub CBOR::XS::as_bool ($) { $_[0] ? $Types::Serialiser::true : $Types::Serialiser::false }
793
794sub CBOR::XS::as_map ($) {
795 ARRAY:: eq ref $_[0]
796 and $#{ $_[0] } & 1
797 or do { require Carp; Carp::croak ("CBOR::XS::as_map only acepts array references with an even number of elements, found ") };
798
799 bless [$_[0], 7, undef], CBOR::XS::Tagged::
800}
779 801
780=head2 OBJECT SERIALISATION 802=head2 OBJECT SERIALISATION
781 803
782This module implements both a CBOR-specific and the generic 804This module implements both a CBOR-specific and the generic
783L<Types::Serialier> object serialisation protocol. The following 805L<Types::Serialier> object serialisation protocol. The following

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines