concepts/
efun/
SYNOPSIS
	object shadow(object ob, int flag)

DESCRIPTION
	If flag is 1 then the current object will shadow ob. If flag
	is 0 then either 0 will be returned or the object that is
	shadowing ob.
	
	The calling object must be permitted by the master object to
	do the shadowing. In most installations, an object that
	defines the function query_prevent_shadow() to return 1
	can't be shadowed, and the shadow() function will return 0
	instead of ob.
	shadow() also fails if the calling object tries to shadow
	a function that was defined as ``nomask''.
	
	If an object A shadows an object B then all call_other() to B
	will be redirected to A. If object A has not defined the
	function, then the call will be passed to B. There is only on
	object that can call functions in B with call_other(), and
	that is A. Not even object B can call_other() itself. All
	normal (internal) function calls inside B will however remain
	internal to B.
	
	If the object that was shadowed, is destructed, the shadow
	will also be destructed automatically.

SEE ALSO
	unshadow(E), query_allow_shadow(M)