Dcmd and Walker Name Resolution
As described earlier, each MDB dmod provides a set of dcmds and walkers. Dcmds and walkers are tracked in two distinct, global namespaces. MDB also keeps track of a dcmd and walker namespace associated with each dmod. Identically named dcmds or walkers within a given dmod are not allowed. A dmod with this type of naming conflict will fail to load.
Name conflicts between dcmds or walkers from different dmods are allowed in the global namespace. In the case of a conflict, the first dcmd or walker with that particular name to be loaded is given precedence in the global namespace. Alternate definitions are kept in a list in load order.
Use the backquote
character (`
) in a dcmd or walker name as a scoping operator
to select an alternate definition. For example, if dmods m1
and m2
each provide a dcmd d
, and m1
is
loaded prior to m2
, then you can use the scoping operator
as shown below to specify the dcmd you want:
-
::d
-
Executes
m1
's definition ofd
-
::m1`d
-
Executes
m1
's definition ofd
-
::m2`d
-
Executes
m2
's definition ofd
If module m1
is unloaded, the next dcmd on the global definition list (m2`d
) is promoted to global visibility. Use the ::which
dcmd
to determine the current definition of a dcmd or walker. Use the ::which
-v
dcmd to display the global definition list.