string mapping_to_string( mapping map );
string array_to_string( mixed *args ) {
int i;
args = copy(args);
for ( i = sizeof( args ) - 1; i > -1; i-- ) {
if ( pointerp( args[ i ] ) ) {
args[ i ] = array_to_string( args[ i ] );
continue;
}
if ( mapp( args[ i ] ) ) {
args[ i ] = mapping_to_string( args[ i ] );
continue;
}
args[ i ] = sprintf( "%O", args[ i ] );
}
return "({ "+ implode( args, ", " ) +" })";
} /* array_to_string() */
string mapping_to_string( mapping map ) {
int i;
mixed *args;
if( !mapp( map ) ) {
/* If this breaks badly, blame the idiot calling this function
* with a functionpointer instead of a mapping as argument!
* Olorin
*/
return sprintf( "%O", map );
}
args = keys( map );
for ( i = sizeof( args ) - 1; i > -1; i-- ) {
if ( pointerp( map[ args[ i ] ] ) ) {
args[ i ] = sprintf( "%O : %s", args[ i ],
array_to_string( map[ args[ i ] ] ) );
continue;
}
if ( mapp( map[ args[ i ] ] ) ) {
args[ i ] = sprintf( "%O : %s", args[ i ],
mapping_to_string( map[ args[ i ] ] ) );
continue;
}
args[ i ] = sprintf( "%O : %O", args[ i ], map[ args[ i ] ] );
}
return "([ "+ implode( args, ", " ) +" ])";
} /* mapping_to_string() */
void alt_move(mixed dest, object ob){
if(!ob)
return;
evaluate(bind((:move_object, dest:), ob));
}
varargs string extract(string str, int start, int end) {
if (end)
return str[start..end];
return str[start..];
} /* extract() */