[#BloombergLP-bdld-DatumUtil-safeTypedPrint] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdld.adoc[bdld]::xref:BloombergLP/bdld/DatumUtil.adoc[DatumUtil]::safeTypedPrint :relfileprefix: ../../../ :mrdocs: Write the value of the specified `object` to the specified `outputStream` in a human‐readable format that is non‐ambiguous regarding the type of the `bdld::Datum` value printed, and return a reference to the modifiable `outputStream`. Optionally specify an initial indentation `level`, whose absolute value is incremented recursively for nested objects. If `level` is specified, optionally specify `spacesPerLevel`, whose absolute value indicates the number of spaces per indentation level for this and all of its nested objects. If `level` is negative, suppress indentation of the first line. If `spacesPerLevel` is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by `level`). If `stream` is not valid on entry, this operation has no effect. Note that `safeTypedPrint` explicitly allows self‐ referential data structures, or in other words data structures with cycles, to be printed. When a cycle is detected, that subgraph is not printed again. Also note that the human‐readable format is not fully specified, and can change without notice. == Synopsis Declared in `<bdld_datumutil.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- static std::ostream& safeTypedPrint( std::ostream& outputStream, xref:BloombergLP/bdld/Datum.adoc[Datum] const& object, int level = 0, int spacesPerLevel = 4); ---- [.small]#Created with https://www.mrdocs.com[MrDocs]#