/**
* Contains some simul_efuns.
* @author Pinkfish
*/
string mapping_to_string( mapping map );
/**
* This method converts and input array into a string.
* @param args the array to convert
* @return the string value of the array
* @see mapping_to_string()
*/
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( mappingp( args[ i ] ) ) {
args[ i ] = mapping_to_string( args[ i ] );
continue;
}
args[ i ] = sprintf("%O", args[ i ] );
}
return "({ "+implode( args, ", ")+" })";
} /* array_to_string() */
/**
* This method converts and input mapping into a string.
* @param args the mapping to convert
* @return the string value of the mapping
* @see array_to_string()
*/
string mapping_to_string( mapping map ) {
int i;
mixed *args;
if( !mappingp( 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( mappingp( 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() */