Ne.app NeANT
The Ne.app NeANT User module of the NeANT distribution.
Formated Output Directives and Conversion Specifiers

The RWTest library supports all formatted output directives specified by the C99 standard as well as many other directive extensions. Only deviations, extensions, and other implmementation-defined behavior are described below. Consult your system and/or compiler documentation for specifications of the standard formatting output directives.

Unless specified otherwise, the following caveats apply to all directives and conversions. Directives that accept a pointer argument will convert a null pointer into the string literal (null).

Specifiers within formatting directives are denoted by angle brackets. The specifiers are placeholders whose range of possible values are listed in the description of the directive.

C89 Directives

Pointer %p %#p

The argument is a pointer to void. The value of the pointer is converted to a sequence of hexadecimal digits. The number of converted digits depends on the size of the void* type. The "alternate form" expressed by %#p immediately precedes converted digits with a 0x prefix.

C99 Directives

No known deviations or implementation-defined behavior.

RWTest Extensions

Boolean %b

The argument is a value convertible to bool type. If the value of the argument is nonzero, the value is converted to the string literal true. Otherwise, the value converts to false.

Function Pointer %{f}

The argument is a pointer to a function. The conversion and formatting is performed as specified by the %p directive.

Member Pointer %{M}

The argument is a pointer to a composite member. The conversion and formatting is performed as specified by the %p directive.

Escaped Character %{c} %{#c}

The argument is an integer value converted to unsigned char type. For non-printable characters, the resulting output is formatted as the corresponding escape sequence. (The value for a horizontal tab character for example is formatted as the string literal \t and a zero value may be formatted as the string literal \x00. In the alternate form, the resulting output is immediately surrounded with a single quotation mark '.

Escaped Wide Character %{lc} %{#lc}

Similar to the escaped character directive %{c} and quoted escaped character directive %{#c} respectively, except that the argument is a value of wchar_t type.

Quoted Character String %{#s}

Similar to the character string directive s except that the resulting output is surrounded with a double quotation mark "</tt>. @subsection rwtest-fmtspec-ext-ls Quoted Wide Character String \%{\#ls} Similar to the quoted character string directive <tt>%{\#s}</tt> except that the argument is a pointer to a null-terminate sequence of <tt>wchar_t</tt> type. @subsection rwtest-fmtspec-ext-err Error Code \%m \%{\#m} The argument is an integer value representing a system-dependent error code. In the first form, the value is interpreted as an argument of the \c strerror() function. The formatted result is the return value of this function using this parameter value. In the second form, the formatted result is a character sequence representing the corresponding error name (e.g. \c ENOMEM) if applicable or equivalent numeric sequence in decimal notation otherwise. @subsection rwtest-fmtspec-ext-sig Signal \%K The argument is an integer value representing a system-dependent signal. The resulting output is a character sequence representing the name of corresponding signal (e.g. \c SIGABRT) if applicable or equivalent numeric sequence in decimal notation otherwise. @subsection rwtest-fmtspec-ext-bits Bitset \%{b} The argument is a pointer to an array of \c char. Each bit in the array, ordered from MSB of the first element to LSB of the last element is converted into a sequence of '0' or '1' characters. @subsection rwtest-fmtspec-ext-Ai Integer Array \%{Ac} \%{Ao} \%{Ad} \%{Ax} The argument is a pointer to an array of integer type. The resulting output is formatted as a string of comma-separated integer values. The notation of each integer value is specified by <tt>c</tt> for characters, <<tt>o</tt> for octal, <tt>d</tt> for decimal, or <tt>x</tt> for hexadcimal. An optional field width specifies the size of elements in the array (defaults to 1). An optional precision specifies the length of the array. In the alternate form, the resulting output for octal and hexidecimal integer values are prefixed with string literals <tt>0</tt> and <tt>0x</tt> respectively. @subsection rwtest-fmtspec-ext-I Fixed-Width Integers \%{I<wn>} The argument is a value of an integer type. The directive requires two specifiers: the <tt>w</tt> specifier is one of 8, 16, 32, or 64 specifying the width of the integer value. The <tt>n</tt> specifier is one of \c d, \c o, \c x, or \c X specifying the notation of the resulting output. @subsection rwtest-fmtspec-ext-Is Stream State \%{Is} \%{\#Is} The argument is a value of type <tt>std::ios_base::iostate</tt>. In the plain form, the resulting ouput is formatted as a sequence of one or more unqualified names corresponding to the \c iostate enumerators, separated by the OR operator (<tt>|</tt>). In the extended form, the resulting output is prefixed with the string literal <tt>std::ios_base::</tt> indicating the qualfied namespace. @subsection rwtest-fmtspec-ext-Io Open Mode \%{Io} \%{\#Io} Similar to the <tt>%{Is}</tt> directive except the argument is a value of the <tt>std::ios_base::openmode</tt> enumeration type and names in the resulting output correspond to enumerators of this type. @subsection rwtest-fmtspec-ext-Iw Seek Direction \%{Iw} \%{\#Iw} The argument is a value of type <tt>std::ios_base::seekdir</tt>. In the plain form, the resulting ouput is formatted as the unqualified name corresponding to one of the \c seekdir enumerators. In the extended form, the enumerator is qualified with the enclosing namespace. @subsection rwtest-fmtspec-ext-If Format Flag \%{If} \%{\#Iw} Similar to the <tt>%{Is}</tt> directive except the argument is a value of the <tt>std::ios_base::fmtflags</tt> enumeration type and names in the resulting output correspond to enumerators of this type. @subsection rwtest-fmtspec-ext-Lc Locate Category \%{Lc} \%{\#Lc} The argument is an integer type representing a constant defined by the C <tt>&lt;locale.h&gt;</tt> header (identified by an <tt>LC_</tt> prefix) or a <tt>std::locale::category</tt> constant defined by the C++ <tt>&lt;locale&gt;</tt> header. The resulting output is formatted as a character string representing the name of the C or C++ constant enclosed in square brackets (<tt>[</tt>) and <tt>]</tt>). In the alternate form, the formatted output for C++ constants is prefixed with the string literal <tt>std::locale::</tt> indicating the qualified namespace. @subsection rwtest-fmtspec-ext-LC Character Classifiers \%{LC} \%{\#LC} The argument is an integer type representing enumerators of the <tt>std::ctype_base::mask</tt> enumeration. The resulting output is formatted as a character string representing the name of the enumerator enclosed in square brackets (<tt>[</tt>) and <tt>]</tt>). In the alternate form, the enumerator is prefixed with the string literal <tt>std::ctype_base::</tt> indicating the qualified namespace. @subsection rwtest-fmtspec-ext-pid Process Identifier \%{P} The argument is a value of the portable \c rw_pid_t type. The resulting output is formatted as a numeric sequence of digits representing the corresponding process identifier. The \c P specifier may be preceded by optional width, justification, and precision qualifiers. @subsection rwtest-fmtspec-ext-str String \%{S} The argument is a pointer to an object of the \c std::string class. Otherwise, the pointer \c P is converted by calling the \c P->c_str() function and the result is formatted identical to the <tt>%s</tt> character string directive. @subsection rwtest-fmtspec-ext-wstr Wide String \%{lS} The argument is a pointer to an object of the \c std::wstring class. Conversion and formatting is performed as stated for the \c \%{S} directive. @subsection rwtest-fmtspec-ext-tm Time Structure \%{t} \%{\#t} The argument is a pointer to a \c tm structure. If the pointer is null, the resulting output is the string literal \c (null). In the plain form, the resulting output for a valid pointer is formatted similar (but not necessarily identical) to the return value of the \c asctime() function. If the value of any structure member is outside its valid range, the resulting output is formatting using the alternate form. In the alternate form, the resulting output is formatted as a comma-separated sequence of members enclosed in braces where each member is of the format "name=value [range]". The "[range]" is only shown if the value is not in the valid range for the respective member.

Other Directives

The following directives are also recognized by RWTest output functions but are heretofore undocumented.

  • %{<n>} buffer size
  • %{<n>$} positional parameter
  • %{$} environment variable
  • %{?} %{:} %{;} conditionals
  • %{