new object $dmi_data: $root; var $dmi_data descriptions = #[]; var $root created_on = 860904004; var $root flags = ['variables, 'methods, 'code, 'core]; var $root inited = 1; var $root managed = [$dmi_data]; var $root manager = $dmi_data; public method .add_data_to_method() { arg method, identifier, @data; var method_data, identifier_data; method_data = (| descriptions[method] |) || #[]; if ((data.length()) == 1) { method_data = method_data.add(identifier, @data); } else if ((data.length()) == 2) { identifier_data = (| method_data[identifier] |) || #[]; identifier_data = identifier_data.add(data[1], data[2]); method_data = method_data.add(identifier, identifier_data); } descriptions = descriptions.add(method, method_data); }; public method .add_description_to_db() { arg method, description; descriptions ?= #[]; descriptions = (> descriptions.add(method, description) <); }; public method .del_data_from_method() { arg method, identifier, @data; var method_data, identifier_data; method_data = (| descriptions[method] |) || #[]; if ((data.length()) == 0) { (| (method_data = method_data.del(identifier)) |); } else if ((data.length()) == 1) { identifier_data = (| method_data[identifier] |) || #[]; (| (identifier_data = identifier_data.del(data[1])) |); method_data = method_data.add(identifier, identifier_data); } descriptions = descriptions.add(method, method_data); }; public method .del_description_from_db() { arg method; descriptions = (| descriptions.del(method) |); }; public method .describe_method() { arg method; return (> descriptions[method] <); }; root method .init_dmi_data() { descriptions = #[]; }; root method .uninit_dmi_data() { var i; descriptions ?= #[]; for i in (descriptions.keys()) $interface_registry.del_description(this(), i); descriptions = 0; };