FormatStatement Manual

About

Typically a MAXON API interface or a data type defines a "ToString()" function. This function returns a maxon::String describing the given object. Such a "ToString()" function accepts a maxon::FormatStatement argument that can contain additional information on how the object should be described.

Class

A maxon::FormatStatement object contains string stored under a given string identifier.

ToString

A "ToString()" function can read information from the given maxon::FormatStatement to define how it formats the returned maxon::String.

// This example shows an implementation of ToString() on a custom data type.
// The function formats the result maxon::String based on the given FormatStatement argument.
maxon::String ToString(const maxon::FormatStatement* formatStatement = nullptr) const
{
maxon::Bool longFormat = false;
// check FormatStatement
if (formatStatement)
{
const maxon::CString format = formatStatement->Get("Format");
if (!format.IsEmpty())
longFormat = format.Find(maxon::CString("Long"), 0);
}
// format result
if (longFormat)
result = FormatString("Value A: @, Value B: @, Value C: @", _a, _b, _c);
else
result = FormatString("@, @, @", _a, _b, _c);
// return formatted string
return result;
}
const char * format
Definition: abstract.h:183
maxon::String ToString(const Filename &val, const maxon::FormatStatement *formatStatement, maxon::Bool checkDatatype=false)
Definition: string.h:1490
Class to store formatting statements.
Definition: string.h:2030
Definition: string.h:1235
PyObject PyObject * result
Definition: abstract.h:43
bool Bool
boolean type, possible values are only false/true, 8 bit
Definition: apibase.h:181
#define FormatString(...)
Definition: string.h:2100

Usage

When calling a "ToString()" function the call can hand over a maxon::FormatStatement argument to modify the behaviour of the function.

For more information about the output syntax see Output Syntax.

Note
Not all "ToString()" functions do handle the maxon::FormatStatement argument. When a function does not handle the argument, a nullptr can be handed over.
// This example prints the data of the given data type to the debug console.
// The behaviour of ToString() is controlled via FormatStatement arguments.
FloatTriplet triplet;
triplet._a = 1.1;
triplet._b = 1.2;
triplet._c = 1.3;
// long format
longFormat.Set("Format"_cs, "Long"_cs) iferr_return;
const maxon::String longFormatString = triplet.ToString(&longFormat);
DiagnosticOutput("@", longFormatString);
// short format
shortFormat.Set("Format"_cs, "Short"_cs) iferr_return;
const maxon::String shortFormatString = triplet.ToString(&shortFormat);
DiagnosticOutput("@", shortFormatString);
// default format
DiagnosticOutput("@", triplet);
Definition: formatstatement.h:10
maxon::String ToString(const maxon::FormatStatement *formatStatement=nullptr) const
[data_formatstring_tostring]
Definition: formatstatement.h:26
maxon::Float _c
Definition: formatstatement.h:21
maxon::Float _a
Definition: formatstatement.h:17
maxon::Float _b
Definition: formatstatement.h:20
Result< void > Set(const Char *identifier, const CString &str)
#define DiagnosticOutput(formatString,...)
Definition: debugdiagnostics.h:176
#define iferr_return
Definition: resultbase.h:1519

Further Reading