#ifndef _object_ #define _object_ #include struct object : root { /* classes */ shared_class class(); root *classes(); boolean understands(name message); boolean descendantof(name classnm); /* naming */ name nm; char *namestr(); boolean rename(name newname); void newname(); object find_name(name address); object find_path(name *path); object find_object(any address); /* hierarchy */ object @parent; object *members; object *parents(); boolean rooted(); void reparent(object *newparents); void initmember(object m); void addmember(object m); object newmember(name classnm); void removemember(object m); void delmember(object m); boolean setscript(char *pdb, char *ps); /* initialization */ void OnInit(); void oninit(); /* variables */ name *persistent; void promote(name var, any val); void softpromote(name var, any value); void unpromote(name var); boolean promoted(name var); boolean scoped(name var); /* housekeeping */ void destroy(); /* messages */ boolean logging; /* scoped */ void deliver_self(name message); void deliver_parent(name message); void deliver(name message); void doit(any thing); }; #endif