/
CDC-1.2b/
CDC-1.2b/src/
parent $misc
object $text

var $root child_index 4
var $root owners [$text]
var $root owned [$text]
var $root fertile 0
var $root inited 1
var $text text 0
var $root info []
var $root manager $text
var $root writable [$text]
var $root readable ['parameters, 'methods, 'code]
var $root dbref 'text

method init_text
    if (caller() != $root)
        throw(~perm, "Caller is not $root.");
    text = [];
.

method uninit_text
    if (caller() != $root)
        throw(~perm, "Caller is not $root.");
    text = [];
.

method text
    // returns text
    if ((!(.is_writable_by(sender()))) && (sender() != this()))
        throw(~perm, "Permission Denied.");
    return text;
.

method set_text
    arg txt;
    
    // resets ,text to the list sent
    if ((!(.is_writable_by(sender()))) && (sender() != this()))
        throw(~perm, "Permission Denied.");
    text = txt;
.

method ins_line
    arg txt, [loc];
    
    // inserts txt at loc (where loc is an integer)
    if ((!(.is_writable_by(sender()))) && (sender() != this()))
        throw(~perm, "Permission Denied.");
    if (!loc)
        text = [@text, txt];
    else
        text = (> insert(text, loc, txt) <);
.

method del_text
    // deletes all text
    if ((!(.is_writable_by(sender()))) && (sender() != this()))
        throw(~perm, "Permission Denied.");
    text = [];
.

method del_line
    arg linestr;
    
    // deletes "line" where line is the actual line to delete
    if ((!(.is_writable_by(sender()))) && (sender() != this()))
        throw(~perm, "Permission Denied.");
    text = setremove(text, line);
.

method del_nline
    arg nline;
    
    // deletes nline where nline is an integer reference to a list location
    if ((!(.is_writable_by(sender()))) && (sender() != this()))
        throw(~perm, "Permission Denied.");
    text = (> delete(text, nline) <);
.

method ins_lines
    arg lines, loc;
    var line;
    
    // inserts txt at loc (where loc is an integer)
    if ((!(.is_writable_by(sender()))) && (sender() != this()))
        throw(~perm, "Permission Denied.");
    if (type(lines) != 'list)
        throw(~type, "Lines should be passed as a list of strings.");
    for line in (lines) {
        text = (> insert(text, loc, line) <);
        loc = loc + 1;
    }
.