ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libecb/ecb.pod
(Generate patch)

Comparing libecb/ecb.pod (file contents):
Revision 1.76 by root, Mon Jan 20 13:13:56 2020 UTC vs.
Revision 1.78 by root, Mon Jan 20 20:40:06 2020 UTC

595 595
596=item int ecb_ctz32 (uint32_t x) 596=item int ecb_ctz32 (uint32_t x)
597 597
598=item int ecb_ctz64 (uint64_t x) 598=item int ecb_ctz64 (uint64_t x)
599 599
600=item int ecb_ctz (T x) [C++]
601
600Returns the index of the least significant bit set in C<x> (or 602Returns the index of the least significant bit set in C<x> (or
601equivalently the number of bits set to 0 before the least significant bit 603equivalently the number of bits set to 0 before the least significant bit
602set), starting from 0. If C<x> is 0 the result is undefined. 604set), starting from 0. If C<x> is 0 the result is undefined.
603 605
604For smaller types than C<uint32_t> you can safely use C<ecb_ctz32>. 606For smaller types than C<uint32_t> you can safely use C<ecb_ctz32>.
605 607
608The overloaded C++ C<ecb_ctz> function supports C<uint8_t>, C<uint16_t>,
609C<uint32_t> and C<uint64_t> types.
610
606For example: 611For example:
607 612
608 ecb_ctz32 (3) = 0 613 ecb_ctz32 (3) = 0
609 ecb_ctz32 (6) = 1 614 ecb_ctz32 (6) = 1
610 615
611=item bool ecb_is_pot32 (uint32_t x) 616=item bool ecb_is_pot32 (uint32_t x)
612 617
613=item bool ecb_is_pot64 (uint32_t x) 618=item bool ecb_is_pot64 (uint32_t x)
614 619
620=item bool ecb_is_pot (T x) [C++]
621
615Returns true iff C<x> is a power of two or C<x == 0>. 622Returns true iff C<x> is a power of two or C<x == 0>.
616 623
617For smaller types than C<uint32_t> you can safely use C<ecb_is_pot32>. 624For smaller types than C<uint32_t> you can safely use C<ecb_is_pot32>.
618 625
626The overloaded C++ C<ecb_is_pot> function supports C<uint8_t>, C<uint16_t>,
627C<uint32_t> and C<uint64_t> types.
628
619=item int ecb_ld32 (uint32_t x) 629=item int ecb_ld32 (uint32_t x)
620 630
621=item int ecb_ld64 (uint64_t x) 631=item int ecb_ld64 (uint64_t x)
632
633=item int ecb_ld64 (T x) [C++]
622 634
623Returns the index of the most significant bit set in C<x>, or the number 635Returns the index of the most significant bit set in C<x>, or the number
624of digits the number requires in binary (so that C<< 2**ld <= x < 636of digits the number requires in binary (so that C<< 2**ld <= x <
6252**(ld+1) >>). If C<x> is 0 the result is undefined. A common use case is 6372**(ld+1) >>). If C<x> is 0 the result is undefined. A common use case is
626to compute the integer binary logarithm, i.e. C<floor (log2 (n))>, for 638to compute the integer binary logarithm, i.e. C<floor (log2 (n))>, for
631the given data type), while C<ecb_ld> returns how many bits the number 643the given data type), while C<ecb_ld> returns how many bits the number
632itself requires. 644itself requires.
633 645
634For smaller types than C<uint32_t> you can safely use C<ecb_ld32>. 646For smaller types than C<uint32_t> you can safely use C<ecb_ld32>.
635 647
648The overloaded C++ C<ecb_ld> function supports C<uint8_t>, C<uint16_t>,
649C<uint32_t> and C<uint64_t> types.
650
636=item int ecb_popcount32 (uint32_t x) 651=item int ecb_popcount32 (uint32_t x)
637 652
638=item int ecb_popcount64 (uint64_t x) 653=item int ecb_popcount64 (uint64_t x)
639 654
655=item int ecb_popcount (T x) [C++]
656
640Returns the number of bits set to 1 in C<x>. 657Returns the number of bits set to 1 in C<x>.
641 658
642For smaller types than C<uint32_t> you can safely use C<ecb_popcount32>. 659For smaller types than C<uint32_t> you can safely use C<ecb_popcount32>.
660
661The overloaded C++ C<ecb_popcount> function supports C<uint8_t>, C<uint16_t>,
662C<uint32_t> and C<uint64_t> types.
643 663
644For example: 664For example:
645 665
646 ecb_popcount32 (7) = 3 666 ecb_popcount32 (7) = 3
647 ecb_popcount32 (255) = 8 667 ecb_popcount32 (255) = 8
650 670
651=item uint16_t ecb_bitrev16 (uint16_t x) 671=item uint16_t ecb_bitrev16 (uint16_t x)
652 672
653=item uint32_t ecb_bitrev32 (uint32_t x) 673=item uint32_t ecb_bitrev32 (uint32_t x)
654 674
675=item T ecb_bitrev (T x) [C++]
676
655Reverses the bits in x, i.e. the MSB becomes the LSB, MSB-1 becomes LSB+1 677Reverses the bits in x, i.e. the MSB becomes the LSB, MSB-1 becomes LSB+1
656and so on. 678and so on.
657 679
680The overloaded C++ C<ecb_bitrev> function supports C<uint8_t>, C<uint16_t> and C<uint32_t> types.
681
658Example: 682Example:
659 683
660 ecb_bitrev8 (0xa7) = 0xea 684 ecb_bitrev8 (0xa7) = 0xea
661 ecb_bitrev32 (0xffcc4411) = 0x882233ff 685 ecb_bitrev32 (0xffcc4411) = 0x882233ff
662 686
687=item T ecb_bitrev (T x) [C++]
688
689Overloaded C++ bitrev function.
690
691C<T> must be one of C<uint8_t>, C<uint16_t> or C<uint32_t>.
692
663=item uint32_t ecb_bswap16 (uint32_t x) 693=item uint32_t ecb_bswap16 (uint32_t x)
664 694
665=item uint32_t ecb_bswap32 (uint32_t x) 695=item uint32_t ecb_bswap32 (uint32_t x)
666 696
667=item uint64_t ecb_bswap64 (uint64_t x) 697=item uint64_t ecb_bswap64 (uint64_t x)
698
699=item T ecb_bswap (T x)
668 700
669These functions return the value of the 16-bit (32-bit, 64-bit) value 701These functions return the value of the 16-bit (32-bit, 64-bit) value
670C<x> after reversing the order of bytes (0x11223344 becomes 0x44332211 in 702C<x> after reversing the order of bytes (0x11223344 becomes 0x44332211 in
671C<ecb_bswap32>). 703C<ecb_bswap32>).
672 704
673=item T ecb_bswap (T x) [C++] 705The overloaded C++ C<ecb_bswap> function supports C<uint8_t>, C<uint16_t>,
674 706C<uint32_t> and C<uint64_t> types.
675For C++, an additional generic bswap function is provided. It supports
676C<uint8_t>, C<uint16_t>, C<uint32_t> and C<uint64_t>.
677 707
678=item uint8_t ecb_rotl8 (uint8_t x, unsigned int count) 708=item uint8_t ecb_rotl8 (uint8_t x, unsigned int count)
679 709
680=item uint16_t ecb_rotl16 (uint16_t x, unsigned int count) 710=item uint16_t ecb_rotl16 (uint16_t x, unsigned int count)
681 711
697 727
698Current GCC versions understand these functions and usually compile them 728Current GCC versions understand these functions and usually compile them
699to "optimal" code (e.g. a single C<rol> or a combination of C<shld> on 729to "optimal" code (e.g. a single C<rol> or a combination of C<shld> on
700x86). 730x86).
701 731
732=item T ecb_rotl (T x, unsigned int count) [C++]
733
734=item T ecb_rotr (T x, unsigned int count) [C++]
735
736Overloaded C++ rotl/rotr functions.
737
738C<T> must be one of C<uint8_t>, C<uint16_t>, C<uint32_t> or C<uint64_t>.
739
702=back 740=back
703 741
704=head2 HOST ENDIANNESS CONVERSION 742=head2 HOST ENDIANNESS CONVERSION
705 743
706=over 4 744=over 4
737Like above, but converts I<from> host byte order to the specified 775Like above, but converts I<from> host byte order to the specified
738endianness. 776endianness.
739 777
740=back 778=back
741 779
742In C++ the following additional functions are supported: 780In C++ the following additional template functions are supported:
743 781
744=over 4 782=over 4
745 783
746=item T ecb_be_to_host (T v) 784=item T ecb_be_to_host (T v)
747 785
749 787
750=item T ecb_host_to_be (T v) 788=item T ecb_host_to_be (T v)
751 789
752=item T ecb_host_to_le (T v) 790=item T ecb_host_to_le (T v)
753 791
754These work like their C counterparts, above, but use templates for the 792These functions work like their C counterparts, above, but use templates,
755type, which make them useful in generic code. 793which make them useful in generic code.
756 794
757C<T> must be one of C<uint8_t>, C<uint16_t>, C<uint32_t> or C<uint64_t> 795C<T> must be one of C<uint8_t>, C<uint16_t>, C<uint32_t> or C<uint64_t>
758(so unlike their C counterparts, there is a version for C<uint8_t>, which 796(so unlike their C counterparts, there is a version for C<uint8_t>, which
759again can be useful in generic code). 797again can be useful in generic code).
760 798
812Like above, but additionally convert from host byte order to big endian 850Like above, but additionally convert from host byte order to big endian
813(C<be>) or little endian (C<le>) byte order while doing so. 851(C<be>) or little endian (C<le>) byte order while doing so.
814 852
815=back 853=back
816 854
817In C++ the following additional functions are supported: 855In C++ the following additional template functions are supported:
818 856
819=over 4 857=over 4
820 858
821=item T ecb_peek (const void *ptr) 859=item T ecb_peek (const void *ptr)
822 860

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines