SYNOPSIS
        mixed deep_copy(mixed arg)

DESCRIPTION
        Create a deep copy of <arg> and return it. For arrays, mappings,
        structs and lightweight objects this means that a new array, mapping,
        struct resp. lightweight object is created with copies of the
        original content. Embedded arrays, mappings, structs or lightweight
        objects are truly copied, too.

        For other values this function is a no-op.

        If a lightweight objects was copied, the H_CREATE_LWOBJECT_COPY hook
        will be called to finish initialization of the lightweight object.

        If DYNAMIC_COST is defined, every nested array, mapping, struct and
        lightweight objects counts towards the evaluation cost in both size
        and nesting depth.

EXAMPLES
        mixed *a, *b;

        a = ({ 1, ({ 21, 22 }) });
        b = deep_copy(a);
        a[0] = -1; a[1][0] = -21;
         --> a is now   ({ -1, ({ -21, 22 }) })
             b is still ({  1, ({  21, 22 }) })

HISTORY
        Introduced in LDMud 3.2.6.
        LDMud 3.2.9 added the dynamic cost to the efun.

SEE ALSO
        copy(E)
