/
CDC-1.2b/
CDC-1.2b/src/
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 = #[];
.