Provides a safer, enhanced swprintf replacement.
It does not use use varargs and instead takes an array of P6ARG structs. There are helper macros available to help intitialize the P6ARG's (see P6AI_BOOL(), P6AI_CHAR(), P6AI_INT32() etc.).
The format string uses positional notation to allow I18N issues to be easily handled.
position$
Position indicates the argument position in the pArgs argument array that should be rendered. This value begins at 1 (not zero). For example:
"1$ is the first argument in the array and 2$ is the second"
- Parameters:
-
| pBuffer | [out] The address of the P6WCHAR buffer in which to place the output string. |
| cBuffer | [in] The size of pBuffer in characters. |
| pcWritten | [out, optional] The address of a P6SIZE in which will be returned the number of characters written to pBuffer. NULL may also be passed here if this information is not needed. |
| pszFormat | [in] A NULL terminated P6WCHAR string containing the format string to use. |
| pArgs | [in] The address of an array of P6R::P6ARG structures that define the aruments that are to be expanded. |
| cArgs | [in] The number of array elements in pArgs. |
- Returns:
Success | P6R::eOk | |
Failure | P6R::eInvalidArg | pBuffer or pszFormat is NULL, or cBuffer is zero |
P6R::eEndOfRecord | A position was specified that exceeds the number of arguments in the array. |
P6R::eFormatError | The format string is invalid. Replacements must have the form, 'position$' OR and invalid format type (P6ARGFMT) was specified in the P6ARG array. |
P6R::eTooSmall | The expanded string would not fit in the specified buffer. |