parent $foundation object $messaged_old var $root child_index 0 var $root owners [$messaged_old] var $root fertile 0 var $root inited 1 var $messaged_old messages #[] var $root owned [$messaged_old] var $root manager $messaged_old var $root writable [$messaged_old] var $root readable ['parameters, 'methods, 'code] var $root dbref 'messaged_old method add_message arg name, public, text; // .add_message('name, public, text) // Add a message with name 'name. // 'public' -> 1 if the message is publicly readable, else 0. // 'text' -> default text of the message, probably a string or list of them. if (!(.is_writable_by(sender()))) throw(~perm, "Sender is not an owner."); messages = dict_add(messages, name, #[['public, public], ['text, text]]); . method del_message arg name; // .del_message('name) // Delete the given message. if (!(.is_writable_by(sender()))) throw(~perm, "Sender is not an owner."); messages = dict_del(messages, name); . method get_message arg name; var info; // .get_message('name) // Return the text of the given message. catch ~keynf { info = messages[name]; } with handler { throw(~msgnf, ("Message (" + toliteral(name)) + ") does not exist."); } if ((!(info['public])) && (!(.is_writable_by(sender())))) throw(~perm, "Message unreadable by sender."); return info['text]; . method get_message_access arg name; var info; // .get_message_access('name) // Return 1 if the message is publicly readable. Else return 0. catch ~keynf { info = messages[name]; } with handler { throw(~msgnf, ("Message (" + toliteral(name)) + ") does not exist."); } return info['public]; . method set_message arg name, text; var info; // .set_message('name, text) // Set message text to 'text', which is usually a string or list of strings. if (!(.is_writable_by(sender()))) throw(~perm, "Sender is not an owner."); catch ~keynf { info = messages[name]; } with handler { throw(~msgnf, ("Message (" + toliteral(name)) + ") does not exist."); } info = dict_add(info, 'text, text); messages = dict_add(messages, name, info); return text; . method set_message_access arg name, public; var info; // .set_message_access('name, public) // 'public' should be 1 if the message is publicly readable, else 0. if (!(.is_writable_by(sender()))) throw(~perm, "Sender is not an owner."); catch ~keynf { info = messages[name]; } with handler { throw(~msgnf, ("Message (" + toliteral(name)) + ") does not exist."); } info = dict_add(info, 'public, public); messages = dict_add(messages, name, info); return public; . method messages // .messages() // Return a list of symbols--names of all messages defined on the object. return dict_keys(messages); . method init_messaged_old if (caller() != $root) throw(~perm, "Sender is not $root."); messages = #[]; .