varargs string print_object( mixed arg, int off ) { write( extract( " ", 0, off ) ); if( stringp( arg ) ) { write( "\"" + arg + "\"\n" ); return "Ok"; } if( intp( arg ) ) { write( arg + "\n" ); return "Ok"; } if( objectp( arg ) ) { write( file_name( arg ) ); if( arg->short() ) write( " (Short) \"" + arg->short() + "\"\n" ); else if( arg->query_name() ) write( " (Name) - \"" + arg->query_name() + "\"\n" ); else write( " (Arggghhh)\n" ); return "Ok"; } if( pointerp( arg ) ) { int i; if( sizeof( arg ) == 0 ) { write( "({ })\n" ); return "Ok"; } write( "({ --- size " + sizeof( arg ) + "\n" ); for( i = 0; i < sizeof( arg ); i++ ) print_object( arg[ i ], off + 3 ); write( extract( " ", 0, off ) + "})\n" ); return "Ok"; } return "Oh dear we have failed"; }