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!)

AENDERUNGEN
        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)
