SYNOPSIS
        int clonep()
        int clonep(object obj)
        int clonep(string obj)
        int clonep(mixed  arg)

DESCRIPTION
        The efun returns 1 if <obj> is a clone, and 0 if it is not.
        The <obj> can be given as the object itself, or by its name.
        If <obj> is omitted, the current object is tested.
        Arguments of other types return 0.
        Objects with replaced programs no longer count as clones.

EXAMPLES
        object o;
        o = clone_object("/std/thing");
        write(clonep(o));                           --> writes "1"
        write(clonep("/std/thing"))                 --> writes "0"

        (In COMPAT_MODE use "std/thing" as the filename)

HISTORY
        Introduced in LDMud 3.2.6, changed in 3.2.7 so that objects
        with replaced programs no longer count as clones.

SEE ALSO
        load_name(E), clone_object(E), clones(E), bytesp(E),
        closurep(E), coroutinep(E), floatp(E), intp(E), lpctypep(E),
        lwobjectp(E), mappingp(E), objectp(E), pointerp(E), referencep(E),
        stringp(E), structp(E), symbolp(E)
