| Extracted from Pike v7.8 release 866 at 2018-07-18.

[Top]
lfun::

# Method lfun::_sprintf()

Method _sprintf

  `string _sprintf(int conversion_type, mapping(string:int)|void params)`

Description

  Sprintf callback.

  This method is called by sprintf() to print objects. If it is not present, printing of the object will not be supported for any conversion-type except for the `%O`-conversion-type, which will output `"object"`.

Parameter `conversion_type`

  One of:

  `'b'` | Signed binary integer.
  `'d'` | Signed decimal integer.
  `'u'` | Unsigned decimal integer.
  `'o'` | Signed octal integer.
  `'x'` | Lowercase signed hexadecimal integer.
  `'X'` | Uppercase signed hexadecimal integer.
  `'c'` | Character. If a fieldsize has been specified this will output the low-order bytes of the integer in network byte order.
  `'f'` | Float.
  `'g'` | Heuristically chosen representation of float.
  `'G'` | Like `%g`, but uses uppercase `E` for exponent.
  `'e'` | Exponential notation float.
  `'E'` | Like `%e`, but uses uppercase `E` for exponent.
  `'s'` | String.
  `'O'` | Any value (debug style).
  `'t'` | Type of the argument.

Parameter `params`

  Conversion parameters. The following parameters may be supplied:

  `"precision" : int` | Precision.
  `"width" : int` | Field width.
  `"flag_left" : int(1..1)` | Indicates that the output should be left-aligned.
  `"indent" : int` | Indentation level in `%O`-mode.

Returns

  Is expected to return a string describing the object formatted according to conversion_type .

Note

  _sprintf() is currently not called for the following conversion-types:

  `'F'` | Binary IEEE representation of float (`%4F` gives single precision, `%8F` gives double precision.)

Note

  This function might be called at odd times, e.g. before lfun::create has been called or when an error has occurred. The reason is typically that it gets called when a backtrace is being formatted to report an error. It should therefore be very robust and not make any assumptions about its own internal state, at least not when conversion_type is `'O'`.

Note

  It's assumed that this function is side-effect free.

See also

  sprintf()