SYNOPSIS
        string copy_bits(string src, string dest [, int srcstart
            [, int deststart [, int copylen]]])

BESCHREIBUNG
        Kopiert den Bitbereich [<srcstart> .. <srcstart> + <copylen>] aus dem
        Bitstring <src> in den Bitstring <dest> beginnend an der Position
        <deststart>. Die alten Werte von <dest> werden dabei ueberschrieben.

        Der resultierende String wird zurueck geliefert, die beiden
        Originalstrings bleiben unbeeinflusst.

        Wird <srcstart> nicht angegeben, wird <src> von Anfang an kopiert.
        Ist <srcstart> negativ, wird vom letzten Bit her gezaehlt (d.h. -1
        bezeichnet das letzte Bit).

        Wird <deststart> nicht angegeben, wird <dest> von Anfang an kopiert.
        Ist <deststart> negativ, wird vom letzten Bit her gezaehlt (d.h. -1
        bezeichnet das letzte Bit).

        Wird <copylen> nicht angegeben wird, so wird der gesamte Bitstring
        <src> kopiert. Das Resultat besteht dann aus dem Bitstring <dest>
        bis zur Position <deststart>, gefolgt von <src> ab der Position
        <srcstart>.

        Wenn <copylen> negativ ist, werden abs(<copylen>) _vor_ <srcstart> in
        das Resultat kopiert.

BEISPIELE
        copy_bits(src, dest, 10)       === src[10..]
        copy_bits(src, dest, 10, 5)    === dest[0..4] + src[10..]
        copy_bits(src, dest, 10, 5, 3) === dest[0..4] + src[10..12] + dest[8..]

        (Die Notation src[] / dest[] dient nur der Illustration!)

GESCHICHTE
        Eingefuehrt in LDMud 3.2.9.

SIEHE AUCH
        clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
        count_bits(E), or_bits(E), xor_bits(E), invert_bits(E), and_bits(E)
