varargs string print_object(mixed ob, int off) {
int i;
write(" "[0..off]);
if (intp(ob)) {
write(ob+"\n");
return "int";
}
if (stringp(ob)) {
write("\""+ob+"\"\n");
return "string";
}
if (objectp(ob)) {
write(file_name(ob)+" ");
if (ob->short())
write("(short) "+ob->short()+"\n");
else if (ob->query_name())
write("(name) "+ob->query_name()+"\n");
else
write("(Argghhhh)\n");
return "object";
}
if (pointerp(ob)) {
if (!sizeof(ob))
write("({ })\n");
else {
write("({ -- size "+sizeof(ob)+"\n");
for (i=0;i<sizeof(ob);i++)
print_object(ob[i], off+3);
write(" "[0..off]+"})\n");
}
return "pointer";
}
return "oh dear";
}