/
CDC-1.2b/
CDC-1.2b/src/
parent $foundation
object $old_command_environment

var $root dbref 'old_command_environment
var $root child_index 0
var $root fertile 0
var $root manager $old_command_environment
var $root owned [$old_command_environment]
var $root owners [$old_command_environment]
var $root writable []
var $root readable ['parameters, 'methods, 'code]
var $root inited 1
var $old_command_environment cache 0
var $old_command_environment verb_cache #[]
var $old_command_environment command_cache #[]
var $old_command_environment shortcuts_cache #[]

method uninit_old_command_environment
    verb_cache = #[];
    command_cache = [];
    shortcuts_cache = [];
.

method init_old_command_environment
    verb_cache = #[];
    command_cache = [];
    shortcuts_cache = [];
    .rehash_command_environment();
.

method verb_cache
    return verb_cache;
.

method command_cache
    return command_cache;
.

method shortcuts_cache
    return shortcuts_cache;
.

method purge_command_environment
    verb_cache = #[];
    command_cache = [];
    shortcuts_cache = [];
.

method rehash_command_environment
    var obj;
    
    (> .perms(sender(), 'this) <);
    .purge_command_environment();
    if (.has_ancestor($location)) {
        for obj in (.contents())
            .add_to_command_environment(obj);
    }
    command_cache = .all_commands();
    shortcuts_cache = .all_shortcuts();
.

method del_from_command_environment
    arg obj;
    var obj_verbs, all_verbs, t;
    
    (> .perms(sender(), 'this) <);
    obj_verbs = obj.all_verbs();
    for t in (obj_verbs)
        verb_cache = verb_cache.del_elem(t[1], obj);
.

method add_to_command_environment
    arg obj;
    var obj_verbs, all_verbs, t;
    
    (> .perms(sender(), 'this) <);
    obj_verbs = obj.all_verbs();
    for t in (obj_verbs)
        verb_cache = verb_cache.add_elem(t[1], obj);
.

method xcommand_cache
    return command_cache;
.

method xverb_cache
    return verb_cache;
.

method xshortcuts_cache
    return shortcuts_cache;
.