blob: 1a4d7e1aac0c46aa0c7fdd15ecb9d2faffdbc096 [file] [log] [blame]
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)